There are a number of contributing factors like size and packaging type and the admin requirement, but the most important is that over the year hundreds of thousands of java programs have been written targeting specific java versions, and the maintenance scheme they've chosen introduces incompatibilities with every major release (via object/method deprecation and blacklisting). Many apps work fine on multiple major versions, but many do not. the change between 1.4 and 1.5 was particularly troublesome, and many development folks are hesitant about 8+.
As a result, in order to run your favorite programs, you need the ability to keep older run times installed, and control how/when they update.