Because the kernel address space has to hold more than just RAM (in
particular, it also has to hold memory-mapped PCI devices like
video cards), if you have 1G of physical memory, the kernel will by
default only use 896M of it, leaving 128M of kernel address space
for PCI devices.
A different user/kernel split can help there. I use 2.75/1.25G on
1G RAM machines, but if you use PAE or NX, the split has to be on a
1G boundary.
But these are all workarounds. The real solution is to use a
larger virtual address space so that the original, efficient
technique of mapping both the user's virtual address space and the
kernel's address space (basically a copy of physical memory) will
both fit.