What this means in practice is that people lie to themselves.
If a programmer says "we're 90% done" it means 90% of the effort to build the features has been expended.
If a project manager says "we're 90% done, I just need someone to finish it" it means they're 90% through the budget (and probably 50% done). This is a client with no money, high expectations, and a bad attitude.
The difference is it takes more effort than coding features to finish a project: qa, bug fixes, copy edits, deployment.
Those things need to be managed in the project, and are the responsibility of the project manager. This often surprises new PM's who coast to "90% feature complete" only to realize they are only halfway to "project done".