Well, of course modern systems are partitioned in a very generous way (the data structures alone are much more wasteful) and don't forget that the PET didn't have a real operating system, and the interpreter did not much more than basic flow control and peek/poke commands.
The .Net Framework is certainly not optimized for filesize in the first place (I may be wrong), but the sheer amount of functionality is just huge, almost too much for a single developer brain to keep all the features in RAM. There's tons of code in there. Of course, you can always optimize for space but sometimes the cost of doing so exceeds the usefulness of the idea. Bandwidth and storage gets cheaper by the month, anyway!
For the sake of comparison, you could take a look at the Mono project, an implementation of a compatible framework, it's smaller than Microsoft's if I remember correctly. But then again, I doubt that it is as feature-rich as .Net.