Another reason is that figuring out what the software to be written should actually do, and how it should work, is work that is part of the project and the time it will take needs to be estimated.
As well as the actual development work that will result, which isn't known yet at the time of estimation.