This approach doesn't allow you to easily revert parts of your last change-set. Actually you can't even distinguish in the diff your last changes form all the other accumulated changes once the recent change-set was commited.
I don't follow. You could totally implement a staging area workflow by making a commit with the message "Staging Area", repeatedly amending it, and then finally giving it a real message when you're ready to commit "for real". The main thing you lose that way is the ability to push safely.