Why doesn't MS Project change project end date if tasks are finished ahead of schedule?
The short answer... because the MS Project team doesn't have to dog-food their own product.
Really MS Project isn't going to recalculate the rest of the project every time you change the completion of a value (and it may not be appropriate either). It can also screw things up nicely (ask anyone who has accidentally "rebalanced" their project - everything goes fubar)
You can sort of do what you want by re-leveling the resources:
Go to Tools
-> Level Resources
-> (select "Level only within available slack" and click OK)
I know this thread is really old but since this thread showed for me in a Google search I thought I would add an answer.
When you mark the task as 100% complete, also modify the "Actual Finish" column within the MS Project. This will allow Project to know that the task is complete and recalculate the elements that follow.
When you mark a task as 100% complete, MS Project assumes the task when exactly to schedule. The application does not consider the system date when calculating (as often project managers would be updating a schedule based on information received on earlier days).
MS Project will dynamically calculate a new end date for your schedule, but you need to set up the schedule appropriately and enter the correct information as well.
Look for a book called Dynamic Scheduling with Microsoft Office Project 2007 to learn more.