All I can say is that I personally strongly disagree with your use of term "literal" in this context, and I think that any attempt to draw an analogy between 1 and
1 is specious. The former is a literal value appearing in the source code and used as a compile-time constant. The latter is a run-time list constructor.
But regardless of that, there is still the question of whether the reference returned by [] and {} should be marked readonly. I suppose it could be but Larry never thought to do so, and there doesn't seem any point in changing it now.
Dave.