You end up planning out more than you should and all of a sudden you're working towards dates instead of functionality
That said, there are times when you have to build towards dates. Our current project needed to go-live at a certain point in the year for business and adoption reasons. So, we did have to pick what functionality we needed to have done at that point and ensure that we had the resources to do it.
One of my upcoming projects has some contract timing issues and again a "needs to be ready by X for Y". So, we'll have to determine what functionality is needed by X and build that. Additional functionality will come later.