When I hire programmers, I want programmers that can take vague requirements, apply their intelligence and experience, and provide a solution that works well and can evolve*. Sometimes this might mean the ability to convince me my requirements are ill-considered. If they aren't self-motivated and self-directed, they're wasting my time.
That's fine if you have a small team that can communicate and work well together, but on larger projects the overhead makes that kind of collaboration impossible and having everyone running off and producing their own solutions is a recipe for disaster and you'll end up with people arguing over how it should be done and an utter nightmare when it comes to integrating the various pieces. Sometimes its a lot easier to iron out the requirements, produce a very detailed design, and only leave minor implementation details up to the individual programmer, especially when a lot of those programmers might not be the highly intelligent or experienced people one would want to hire.