There's been articles posted to HN that have attempted to explain why textual source code has become the norm, but from what I remember it comes down to simplicity (and with it, efficiency of storage and processing) and portability. It's the same reason why files as plain sequences of arbitrary bytes won over structured/more "rich" formats, and the "everything is a file/stream of bytes" model of Unix dominated; all the complexity involved in handling things like embedded formatting instructions, resource forks and other nuances is a
huge obstacle to widespread implementation and interoperability. The phrase I remember reading in reference to this is "text is universal", and I agree completely.
One would naturally wonder how Alto/Mesa managed to have all these features, and the answer is simple: it is effectively a closed proprietary ecosystem, developed by one company with plenty of engineering effort, and with little consideration for interchange with other systems. It also had far more processing power than personal computers of the time.
I don't have the answers to how programs should be written, but the current system just seems wrong, locked into decisions made decades ago. It seems like programming is stuck at a local maximum.
Never underestimate the importance of simplicity and a low "barrier to entry" --- in fact, I'd consider the lack of success of much larger, "fancier", more complex systems like the Alto as a strong evidence that, regardless of how fancy, featureful, and radical your system is, unless it has a low barrier to entry and interoperates with existing ones, it will not endure the test of time.