Because then you'd need to ship binaries for every conceivable platform that your gem could be used on and you'd need to make some pretty fundamental changes to the whole Ruby gem distribution system (this probably applies to other languages and their libraries too).
Because then you'd need to ship binaries for every conceivable platform that your gem could be used on
You don't. You ship binaries for the top 2-3 platforms and provide source for the rest. That's how open source projects have been doing things for ages.
and you'd need to make some pretty fundamental changes to the whole Ruby gem distribution system
You ship binaries for the top 2-3 platforms and provide source for the rest.
I wish it were that simple, but then you also have to worry about library versions (unless you really want to bundle all your dependencies too, bloating your little library from 10KiB to tens of megabytes, or more).
You have to deal with dependencies already. In fact, today you have to compile the dependencies. Why isn't downloading their binaries a simpler way to do it?
Whenever I type "{brew,port} install X" I spend the next few minutes watching a compile and muttering "why? why? why?".
For a well-organized ruby gems system, they're largely orthogonal (N + M resources).
Per-platform binaries expend resources proportional to the cross product (NM resources).
You also have to set up and maintain automated build systems for every platform and they form a whole additional set of dependencies for shipping every little point release.