For a 32bit system it is a problem of address space. As was said, graphics (even if they have their own memory) and some other functions need address space which can range from 0.5 to 1.2GBs. Thus the adddress space available for the RAM that the OS uses is between 2.8 and 3.5GB.
For 64bit systems there is no address space problem because the 64bit win7 address space goes up to 128GBs. It is, however, possible that an integrated graphics uses "shared memory" which takes real RAM away from the OS. For the size of that you have to check the specs of the on-board graphics chip.