Seems to me that it should be possible to make a cheatsheet for gcode both more easily arranged and less necessary. Make frequently used gcode numbers have plain language names that the firmware substitutes appropriately based on a straightforward substitution table. G1 could be called move(), G2 could be arc_ccw(), and so on. Include as many different parameters as needed, and increase the number of codes that have plain language names gradually. It would make manual manipulation of gcode much easier.
Yes, more work for the firmware, but not really hard work given that a one to one lookup table would suffice for the commands. A second level might be nice to deal with the parameters, but I would say that is less important.
If this is so simple, then why would it not have been done in the first place? Maybe because the letter and number codes are more concise and take less space than readable names would. The original specification of gcode was (presumably) done long enough ago that memory considerations would have been much more important than they are nowadays. The 32 bit Duet cards have more than enough grunt and space, I expect.