One of the things happening in the opensource world is an increase in system diversity. More and more opensource libraries/software can be built with the native compilers of systems other than Unix. That's a good thing, but also a challenge for Linux distros. I've got users that don't understand why building a completely current version of gimp is a non-trivial task under Redhat Enterprise 5. They say, "well, I could do it just fine under windows". Well, no they couldn't, but only because they don't have to. They pull down a package that completely self contained. Linux distros have such strong version dependencies that it quickly becomes major system surgery to update many things.
Games are another example, some folks would like more games developed for Linux. But, a game developer has to ship their software. And, when they look at Linux they see an unholy mess of utterly different distributions. They are either forced to pick one, or package their game in a completely self contained way. More or less like Google choose to do with Chrome.
Another class of Linux software that hits this problem is commercial engineering packages. Matlab for instance comes in a crazy 700M package complete with a java, ghostscript, firefox rendering engine, mesa, tex, libstdc++ library, libXm library, termcap library and a bit more I got tired of looking. They either choose to do this or cannot ship their package in a distro neutral fashion. They probably cant even get out of internal testing without doing this.
This is something the distros would be well served in working towards a better way to handle.