I believe that it is easier to process unrestricted NL as written by humans who are writing for other humans than it is to correct the errors in the artificial languages written by humans who are writing for machines.
I would tend to agree.
From what I've seen there is a lot of effort wrestling with human-to-human language.
But the human-to-machine side is large ignored.
Example:
MOVE <something> to M0101
and
MOVE <something> to MSTR-POL-NO
accomplish EXACTLY the same thing.
In the human-to-machine domain, typically much/most of the actual context has been stripped out.
Without a whole lot of additional context, it's going to be difficult to unequivocally state that M0101 and MSTR-POL-NO are or are not the same thing.
But when doing human-to-human very often there will be huge contextual clues... NYTimes, Business section... etc.