EDIT: LatticeAnimal answered it. You can’t use the cache with a custom directory.
And it has to be global because the whole point is that there’s only one place and all derivations are shared between user accounts. If everyone had a ~/.nix, hard drives would explode on multi-user systems.
¹ https://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLIC...
² https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
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.
Seems like an unavoidable consequence of how modern software is built
Admittedly supporting that would require updating how all the tools are built and not just defaulting to Whatever Linux Does™, which is probably too much effort to justify in this case, but it is hardly an unsolvable (or even an unsolved) problem.