I don’t think I understand this. The escaping problems happen as a result of expanding globs early. If you pass *.txt as an entry in argv, you don’t need to escape it. The receiving tool then passes it to glob, which returns an array of paths. If you’re matching something that isn’t a file path, you can use `fnmatch‘ and get the same behaviour, but again you’re dealing with structured data.
Quoting is a requirement when you are serialising structured data. If you expand globs and pass them as a string, you have introduced a requirement for quoting. If you pass all of the arguments to a program as a single string, you have similarly introduced a requirement for quoting. The shell performing early expansion adds a bunch of quoting requirements (POSIX shells not having array types and writing arguments as a string, even though they are passed as a vector of strings, also introduces quoting requirements). These are not intrinsic to the problem.
Windows requires a load of quoting because you flatten a structured vector of arguments to a single string.
UNIX requires quoting in the shell because the shell expands globs to a single string.
VMS, as I recall, had neither of these problems because it passed arguments as a vector and provided a shared library routine for expanding file patterns.