Some reasons from experience that developers over-do complexity:
a) Someone at some point in the past told them to plan ahead
b) They aren't sure about a feature (or perhaps about the future of a feature) and hedge against inaction
c) Management does not manicure their task focus and/or priorities