Why? Each new version of Windows includes a larger set of features, which requires more programming. This often results in more .DLL and other program, data, and other files. The Windows Registry also increases with size over time, not to mention the "Temp" directories that don't always get cleaned up properly and tend to accumulate more and more data over time.
Many other Operating Systems are also getting larger as the degree of complexity increases and the feature-sets grow.
Another factor is that newer user interfaces include higher resolution graphics, which usually also require more disk space for storage.
What can you do about it? Make sure your hard drive is large enough (21.4 GBs is far smaller than the typical 250 GB and 500 GB drives for sale these days in new computers, so you probably don't need to worry too much about this for new computers anyway), unless you wish to take the time to determine which files are safe to delete first (not recommended because this can result in serious instability problems or just prevent Windows from booting entirely).
Did you upgrade all the way along? That can be done, but if you've done that, well, that won't have helped much. I'm thinking it's massive from cached objects and system restore points? But that's just a guess. – James T Snell – 2011-07-07T22:08:02.100
Check out this series of posts on the SuperUser blog
– Mokubai – 2011-07-07T22:11:51.473@The White Phoenix System Restore data is not stored in the Windows directory. – Andrew Lambert – 2011-07-07T22:42:38.277
It is so you don't have to insert the CD every time you add a piece of hardware. Plus added security isn't cheap, that's for sure. – surfasb – 2011-07-07T22:25:43.130