While this would all be solved if requirements were decided as a team, much of the time that's not the case. Alas.
I have to deal with an army of VPs spread out over a dozen sub organizations who each have their own idea of what should be done both in the real world and in the software world. You can't teach all of them. I don't even know who most of them are. And all I get is filtered demands through another dozen teams who try to interpret what the VP's latest vague demands really mean, and often fear choosing a detail for fear they will be wrong. And then I have to write something in code which is likely wrong because I have no freaking clue WTF it's supposed to do and get dinged because I didn't meet a schedule agreed to a year ago based on whatever the hell the VPs wanted back then.