If you sandbox, can you actually guarantee completion?
Some more complicated commands might depend on the contents of a file, or the permissions of the file, and an environment variable at the same time to find valid options.
Others may require accessing a list of processes running under the active user, which could only be accessible when running as the user in some circumstances.
Tacking on any kind of permission system will probably break thirty-odd years of programs, and would likely be a hack because of how POSIX is expected to behave.
Duct tape it certainly is, but backwards compatibility isn't something to hate either. We run code all day everyday. That completion runs code shouldn't be a surprise, and you need to judge whether or not you trust it before using it.
That’s not the scary part, though. The scary part is that those completion scripts run with the user’s privileges, unsandboxed. I could find only a single CVE (https://www.cvedetails.com/cve/CVE-2018-7738/), but I think it would be wise to sandbox these scripts.