I've talked about this often and in detail, most recently at the Snap Conference this fall in Heidelberg: Snap! tries to accomplish a delicate balance of supporting old and cheap hardware (such as laptops running Windows XP and Chromebooks, because typically that's what many kids will be given), and creating an experience of general purpose-ness and extendability.
Pre-rendering all Morphs when a project loads takes up a lot of time and resources, but it gives everybody roughly the same user-experience afterwards, regardless of the power of their computer. Projects - mostly - run at the same frame rate and the UI looks and feels - mostly - the same, for example when switching between sprites or when dragging blocks and scripts around.
One downside of caching every Morph is that it takes up a lot of resources, including memory. It's the very essence of pre-computing stuff and caching to assume that accessing memory is faster than re-computing and re-rendering something. On faster computers we could save a lot of memory and loading time by rendering things "just in time". On older and less powerful computers, however, projects would have a lot more "lag" and random pauses in them.
So, yes, I'm assuming that Snap's memory footprint must be enormous by design, especially when a lot of blocks are involved. And just because you hide blocks and scripts inside custom block definitions doesn't hide these Morphs from memory.