Because the customer has no freaking idea what the requirements are at the start of the project. That's always been the failure of Waterfall. You've never been writing code and suddenly thought of something that needed to be added to (or removed from) the system? Seriously?