If I understand correctly, the lack of an escape character for the GECOS field comes down to a lack of coordination. There is no one piece of software that manages access to this field, so every piece of software that uses that value would have to agree on the syntax and implement it — an impossible task for a format that’s been in use for decades and was only loosely-defined in the first place.
There’s still some software out there that doesn’t recognize the GECOS subfields in the first place. That software treats commas as normal characters, confusing software that does recognize the subfields.