Sometimes it feels like there are just two types of developers: the architecture astronaut who over-engineers the simplest problems, and the code cowboy that always takes shortcuts to solve the problem at hand while ignoring maintainability.
But you need a bit of both!
If a piece of software can be expected to evolve in a certain direction, then make your code flexible enough to accommodate those changes.
But if there's straightforward code that supports all real use cases, then please avoid the overhead of more modularity.