The short (and probably only) answer is that it's a design decision made when the XML spec was being written.
XML was designed deliberately to have a clear set of rules that could be strictly enforced without any possible ambiguities. One of those clear rules is that all occurrences of <
, >
and &
must be escaped into entities.
Yes, they could have allowed circumstances where they didn't need to be escaped, but they weren't designing a language to make it easy for humans to write; they were designing it to make it easy for computers to generate it and to parse it. The strictness of the rules is a result of that. XML that has been generated properly will parse properly because there are no ambiguities.
In any case, it's a decision that has been made and is never going to be changed. That's the way XML is, so those are the rules you have to follow.
There are a surprising number of system out there which generate "XML" that fails these rules. This is bizarre because pretty much every language out there has an API for generating properly formed XML. One can only assume therefore that any systems that generate broken XML have been written to generate it "manually"; ie without using the APIs provided by the lanugage. This is an immediate red flag that the system has been written by a developer who really doesn't know what he's doing. The fact that so many of these systems exist is a scary indictment on the general quality of code out in the wide world.