As commentors above have noted, not only do many Windows programs not have an installer, but some OS X programs, do.
A few thoughts do come to mind:
Part of an installer's job is to compress the payload. You're actually doing that step manually on OS X when you mount a DMG. Without that facility, something has to run to unzip the software.
When installers first became popular (mostly, it started with InstallShield being shipped as part of VS 97, I believe) disk space wasn't as plentiful. You wanted a program that would let you pick which features to install.
Certainly the most quoted reason for Windows installers is the need to tweak the registry. Now, that could (and often is) done on first run. The classic examples that get set before run are file association and registering shared components.
Shared components: a lot less necessary on today's computer than yesteryear. (And honestly, in hindsight, not worth the hassle then, either).
File association: an interesting one: if you install a PDF viewer on Windows all, your PDF files will open with it. On a Mac, unless you start messing with Finder settings, it's going to use Kind/Type metadata inside each file. Both behavior has their fans/detractors - but if you want a global change, it needs to be registered somewhere central.
But perhaps more than anything else, the real reason is cultural attitude towards backwards compatibility: Microsoft has built a strategy on trying to keep things working. That means new software needs smarts to know where to put stuff (c:\winnt
becomes c:\windows
, etc). Apple's more out with the old, in with the new - it gives them the freedom to streamline things like deployment.