This paper from HP helps explain it–the platform can theoretically support the full 4GB, but your hardware is going to allocate some of the address space (not the physical RAM) to the PCI bus, the video adapter memory address space, and other resources. 32-bit OSs need to use part of the full 4GB address space to address these resources, subtracting from the maximum memory you have available to the OS and applications:
The PCI memory addresses starting down from 4 GB are used for things like the BIOS, IO cards, networking, PCI hubs, bus bridges, PCI-Express, and video/graphics cards. The BIOS takes up about 512 KB starting from the very top address. Then each of the other items mentioned are allocated address ranges below the BIOS range. The largest block of addresses is allocated for today's high performance graphics cards which need addresses for at least the amount of memory on the graphics card. The net result is that a high performance x86-based computer may allocate 512 MB to more than 1 GB for the PCI memory address range before any RAM (physical user memory) addresses are allocated.
So, if your video adapter has 512MB of RAM (like mine does), your maximum memory is going to at most be 3.5GB, because Vista has to use 512MB of that address space to address your video memory. It'll actually be lower than the 3.5GB because there are other hardware resources that need address space, too. So, it never hurts to fill your computer with 4GB of RAM–you'll definitely get the max, but you won't be able to address it all. You probably won't be able to address much more than 3GB, and you might not be able to address more than 2GB.