But mostly the fault of dynamic languages and how they deal with modules. Wish Perl/Python/Ruby let you load a module is as a shared object, and only keep track of changes you've made to it in your non-shared address space. And without the parse step, ideally. (yes, pyc/pmc, but so rarely used...)
But with copy-on-write address space, this amounts to "almost" the same thing.
I know what you're wishing for ... but it'd be really hard, because dynamic languages have very complicated runtimes, which means complicated runtime data structures, which are more than just constant read-only tables. By comparison, static languages like C have, mostly, really simple structures, so loading code/modules can be as simple as paging in a shared library. Even worse, dynamic language optimizations like JIT compilation mean you can't even share the code, because it gets translated independently in each process.
This is one of the big reasons why dynamic languages tend to suck for desktop apps. Which in turn is why I went from Java zealot to Java apostate back in 2000.