I think the problem begins when you start using patterns as if they were first class language constructs. Patterns exist because they are good ways to do very specific things: create instantiation constraints, organize data+logic+view code, etc.
As the name suggest, patterns are, well, patterns. Just because your class is not called SomethingFactory, it doesn't mean it's not a factory, and more importantly, it doesn't mean you chose the right tool for the job.
Over-architecturing, yes, is from hell, but that has to do with defining the scope of the project, which is a project management thing. If anything, a history of good accountability and feature prioritization is what you'd want to see if you're dealing with "highly-paid consultants".