Up to Windows XP, GPU memory was managed by the video driver provided by the manufacturer of the video card. There have been some lower-end cards that had very little dedicated memory and borrowed the rest from the main memory. Unfortunately, they reported the sum of their own and the borrowed memory to the OS and the user as available video memory, mainly for marketing reasons.
Since Windows Vista, the video memory has been virtualized directly by the OS (as opposed to the video driver), so there is at least some amount of sharing for all GPUs, even those with a lot of dedicated memory. The memory reported to the user should now accurately reflect the different types of memory to the user (shared and dedicated).
Microsoft has a pretty detailed explanation on the topic: