Well there are subtle differences between distros.
You have differences in init scripts for instance. These are the bash scripts that are used to configure and setup your computer as it enters different 'runlevels'. You have several runlevels, runlevel 6 is usually shutdown, runlevels for booting up and stuff like that. It's all controlled thru bash scripts.
People have different styles. Redhat/Fedora/Suse/Mandrake have similar versions, Debian has their own style, as does Slackware. If you have a daemon (background proccess) that needs to be started up at boot time or whatnot then it has be done thru one of the init scripts. It's fairly difficult to make a package that would access all equaly as well.
And there are differences in how the filing system is setup, or how the dependancies are figured out, or how the packages are versioned. All sorts of small details that are irritating to figure out.
The actual packages are VERY simple.
For example slackware's tgz file are just tarballs. They have a extra directory that contains package information and scripts to run at install and uninstall time, but that's it (it gets deleted after the package is installed). You can pretty much install them manually by going: cd / ;tar zxfv /path/to/slackware.random.package.tgz
But you loose the niceties of slackware package managment that way.
Deb files are only slightly more complex. They are a 'ar' archive and contain several tarballs. One is the control that has the different scripts and such that are run to configure and setup the particular package. The other is a data tarball and that contains the actual program and such.
To install them manually you would go (in a temp directory):
ar x random.debian.deb
tar zxfv data.tar.gz
then you move the resulting directories to root to copy the files. Then you untar the control tarball and run the install script.. or hack at it.
RPM files are only slightly more complex then that.
My point is that the packages are very simple. If you were to make them work on as many distros as possible they would end up being a huge pain in the rear to manage with lots of bugs and testing that needs to be worked out. Debian, rpms, and tgz (slackware version) files are so simple to make that a average Linux geek can make their own packages simply using a few tools. After you get good at it, then it's a simple thing to build from source code.
With most software they use autotools to make it simple to install from source code. First you make sure that you have the dependancies of the programs you want to install.With Debian it's the *-dev packages of libraries and such you need to install. It's similar with Fedora and Suse and them all. They have devel versions most of the time. To make sure you have those you do a 'install all' selection when you install your distro.
Then you untar the source code in a scratch directory. cd into the directory and run:
./configure
(then you check to make sure that configure has worked correctly and has found everything)
make
sudo make install
And that's it. Sometimes it's a huge pain in the rear, because you have to triple check dependancies and have to setup enviromental variables to get it to work properly. Other times it's dead simple.Most of the time a person used to dealing with source code can get it done correctly in 2 to 3 tries.
The programmers usually provide some README files and INSTALL files, which you should read. Some programs all you have to do is simple make and then copy the resulting binary file to a */bin directory in your PATH. Other programs use alternatives to configure and make, some use scons for example. Sometimes, especially if your using code from a CVS repository you have to use the autotools themselves to generate the configure script and Makefile yourself manually, then you do the ./configure ; make ; make install
Generally these packages are installed in /usr/local directory. That way you keep your custom compile programs from messing around with the distro-specific packaged stuff. So if you want to delete the resulting program look in /usr/local and the directories within that.
When you install using generic non-specific linux install stuff, like a install program for neverwinter nights, or Unreal Tournament, they give you the choice of install directories.. Usually the default is /usr/local/games for most games.
If you have some reason that you only can use pre-compile packages in your computers... (like say you have 300 debian desktops that get updated automaticly everyweekend thru apt-get in a cron script.) you can make your OWN custom packages. Since most packages are pretty simple, it's not hard to knock off a couple yourself.
There are howtos on the web for deb, slackware, and rpm files. After a few tries you can begin to bang out custom packages in no time. As long as they are designed to work on your own machine then it's fairly simple, It's much harder to design them to work on lots of machines though.If you get good enough at making good then you can start sending packages to be included in the official distro stuff.
One of the bad things about RPM's that gave them a poor reputation is that people would bang out their own custom packages and then try to distribute them with no quality assurance. Usually they have lots of custom software, or forget to do proper dependancy checking or have files that conflict with files from other packages. Stuff like that. So after a while of using rpmseek and such you pretty much f**ked your system up. But if your making your own packages then it's not something you usually have to worry about.
Which is why Debian rocks so much. They put a LOT of time and effort into bugtracking and doing quality assurance on packages. And they have LOTS of packages. And they have a smart package handling program called apt-get.
Other distros are beginning to pick up on this. Slackware now has third party intellegent package handling programs. Fedora has Yum and a rpm-version of apt-get (check out and read the FAQ's at Dag Wieer's rpm site). Gentoo has intellegent package handling thru portage.
Mandrake has urpmi... But by far the best is Debian, nexty up with Gentoo, then Fedora, then Slackware.
There are efforts underway to make it so that you can have 'universal' packages easier. The LSB project aims have having standards for how to setup directories and such.
For Debian there is alien designed to transform RPM files into deb files.
Also there is a universal intellegent package manager called 'smart' that will handle and install any package from any major distro. I wouldn't trust it right now though.. Maybe after it matures some. I haven't touched it though.
It's easier, IMO, to use Debian for the massive amounts of packages it supplies, use a few third-party repositories (look at apt-get.org) and compile from source the few odd programs that aren't aviable in my distro's package format. That's what most people do.
smart, the next generation package handler if you want to check it out.
If all of that mystifies you, don't worry. Linux is different, and most of the time you don't have to deal with that sort of crap. Most programs you'd want are aviable from your distro...