I don't believe this is a big issue, typically package authors just use $output variable which returns whatever path the package should be stored at.
The real reason for it are libraries. The binaries that are packaged in /nix/store very often depend on at least glibc and many other libraries. Their path is hardcoded to /nix/store/...
Changing the path would require recompiling, which also means all the caches that were generated would have to be purged and everything would need to be rebuilt.
Though in my limited experience I was able to also use a symlink. I got a warning that some thing could break but all things I was interested in continued to work.