Personally, I'm opposed to the upstream vs. downstream picture painted here. For me, upstream
projects are shared spaces where parties interested in a particular project convene to develop
it to address their (potentially disparate needs), i.e. so-called downstream developers should
actually engage in upstream development to get their needs met (such as features, or the
flexibility to make the software act and look in the ways required by the distribution). The
changes affected upstream then subsequently trickle downstream.
Not doing it this way, i.e. supposing that upstream provides a certain raw kind of software
and last mile development (including, frequently, the addition of entire new features) should
happen in the distributions, usually leads to severe quality control problems. The downstream
developers may not be or usually are not familiar enough with the codebases they work on to
affect significant changes without causing regressions or defects, and by doing the work
downstream rather than in the shared upstream space, they actively evade peer-review from
those who are in the know.
With the kernel in particular, we've seen that problem grow to unholy dimensions (as distro
kernels often were significant forks in the 2.4 era), but thankfully mostly addressed it by
now (except for the embedded space). In the userspace arena, it's still pretty bad, however,
with distributions grabbing and applying undone patches from left and right to differenciate
their offerings from their competitors, with consequently little interest to share or push
upstream. The result is that userspace applications shipped by distributions can often times
be in considerably worse shape than the original upstream releases.
Now, you're Gentoo guy, and I know that Gentoo generally has a relatively sane policy when it
comes to the extent of the deviations from upstream that it will ship, and that it will
generally try to push upstream whatever it comes up with first. Unfortunately, that's not true
for everybody in the market.