But the important thing to not is this fixes the biggest issue of modern Linux - the lack of stable API/ABI - that requires everything to be compiled for every distro.
It also naturally documents each program's interface allowing them to be easily rewritten/mocked/logged/debugged etc.
There's no particular reason it must be so. The Java compiler has a --release flag that lets you say "I want to run the results on Java N" and then the compiler won't use any bytecode or library features that were added after that time, even if it otherwise would automatically and implicitly do so. The result is still binary and non-text based, but there's nothing magic about it. That sort of feature simply takes work that the Linux community is culturally opposed to doing thanks to the fully centralized model.
And making things work this way everywhere is a way to achieve network transparency.
So, it's pretty easy to defend if you care about network transparency above the highest possible performance.