It's not really harmful as long as it's just some shell programs here and there that use it. The problem is when everything starts to rely on it.
Hell, in linux, the dynamic linker (ld-linux.so) depends on procfs to expands ELF variables (e.g. $ORIGIN, which requires the path to the current program being executed, which is retrieved from procfs). It's gone _way_ too far!
Now it does not mean that an other interface would be ugly/annoying to use from the shell.
`sysctl` for instance is quite convenient to use from the shell, and the hierarchical variables that it accepts could very well mirror what procfs exposes.
Something like
`$ sysctl proc.42.environ` <=> `$ cat /proc/42/environ`