Sometimes, I think that the problem has to do with bored developers.  If you have (or think you have) the skills to write more complicated code, but what you are assigned is mind-numbingly  boring, then tarting it up with some unneeded patterns is a way to keep the work interesting.

I've found, though, that it's a bigger challenge to take complicated code or business rules and make them as simple and clear as possible.  Every bit of scaffolding you can remove makes the app smaller, faster, and easier to improve upon later when you actually do need the clever bits.