But equally, you can't expect an upstream developer to package the program for every possible distribution and architecture. Even expecting the upstream developer to support two is a losing proposition, since most people will have one distro that they use regularly.
Is there some way the distros and the upstreams can meet halfway? Source code could be distributed in a standard source package format, which as well as the usual configure script contains metadata about what files are built, what libraries are required and so on. This in turn can generate source packages for rpm, dpkg, Gentoo and so on using translator tools maintained by each distro. This would not be appropriate for core packages, which usually have a lot of distro-specific hacking, but for the long tail of applications and libraries it could bridge the gap between 'distro must package all possible programs' and 'upstream muat package for all possible distros'.