The answer to that question could fill a book.
I think one of the main reasons is that agile development focuses on the deliverable. It always focuses on delivering exactly what is most urgent here and now.
Another reason is that the story based planning and estimation practices that agile processes follow gives a far better estimate of what can be delivered and when.
A good example of how effective story based planning is, is a project I worked at. For a couple of months (before we adopted agile development), the project leader believed that we could deliver on time, and that was about 18 months from deadline. All developers had a feeling that that was probably unrealistic. After starting agile planning, the project leader still had an optimistic appraisal of the situation. But only after a few sprints, the project leader realized that the team simply didn't have the capacity to deliver all the requirements on the expected time. And that was now still more than 12 months from the deadline.
So agile practices also make reality clear a lot sooner.
And finally, agile teams tend to more often adopt practices that create better code quality, e.g. test driven development, frequent refactoring, continuous integration, peer code review/pair programming, etc. Not that traditional software projects prohibit these practices, they just tend to not be that much in focus.