One reson is: Linux is a multiuser-system since it's beginning.
You may install software on a server, where no graphical user interface is present, and which gets used by hundred clients (where a userinterface might be present).

Another one is: Linux is a kind of unix, and a lot of programs are developped for multiple unixes and plattforms.
There are tools to build the installation packages (autoconf, automake, ...) which deal with all of them, so the developer only needs to create one installation package for all of them, which is much less work and easier to maintain.

No. 3: For which GUI should the installation work? KDE, Gnome, Fluxbox, IceWM, ...?
Supporting all would be a lot of additional work, and make the installation depend on a lot of things.
In contrast it is wise to keep dependencies low.

Windows is a surface-oriented system, where even the server has a GUI.
It's a monoculture, where all users have the same surface - they call it 'Windows'.
Therefore windows-installers don't have to deal with the problems, a fine tarball solves.

Installation is quiete easy, if you are used to it, and you are used to it, if you do install often.
If you install rarely, it's not much work.

A normal install means downloading from a mirror, unroll the tarball, and then the 3 magic steps: ./configure, make, (as root make install.
Few packages don't follow the golden rules.
Two reasons for this:
a) New developers who aren't used to it or informed.
Well - we are patient with newbies.
b) Big Players like Oracle, Sun, Adobe. Especially if they ship their software even to the windows-poor.
They have their own tradition and like to do how they ever did, and how their customers are used to, from other plattforms.
Well - we accept foreign traditions - don't we?