"If they did their job exceedingly well from the start, a large part, otherwise a small part."
Strict languages display this trait. Very little has had to change in Nicklaus Wirth's languages, because they were planned with precision. (This has actually changed lately for Delphi, and will change more with the upcoming universal deploy version.)
There is also a flip-side to this, of course. Being deciding that the original code is good enough, such as in the case of Microsoft Windows, or lovely applications like ACDSee, text editors, or the well-known "spirit of Linux" command line applications.
Even though these applications may seem clunky to those who perhaps didn't love them in the first place, they display a well-planned trait as well as a well-defined featureset; even if they don't have bells and whistles, that may be preferred; they do what's on the tin, backward compatibility is great, and are likely to continue to function well in future.
Photoshop would have 90% the same code since 5.0, if you'd go by the featureset. ;P Does it? No. Why? Selling updates. You can't really do more with it today.
The featureset of a file manager, up to the point where it wants to do FTP, web, and cloud is largely the same for any platform for decennia. The only reason such an application still isn't at 1.0 is due to bad planning, whim, an urge to update - and atleast to a small extent the world changing around the application.
The answer is that some gems stay at 1.0 or 1.0.x because the developer has decided on the featureset, completed a bug-free program, and either does not profit from endlessly adding stuff and fixing the bugs in the added stuff, or has moved on to develop more gems.
All else is unlikely to stay anywhere near the code in 1.0. And why shouldn't you rewrite the application if you have a great idea? You should, it's fun to code! :) Except that's not what has taken place in many modern software products. Change for the sake of change (sales) and not motivated by featureset, and to a smaller extent updating to comply with changing platforms, is the order of the day.
And in this soup of interacting pieces of constantly updating software few codebases escape revisions. A few still keep to the dream of foundations and modularizing (and not releasing prematurely), but the vast majority are stuck in the release-fix-update cycle.