That can also be a downside, you believe you have moved stuff but now you can have different versions of programs that don't expect that to be a possibility.
If there is a simlink, a hardlink and an executable, all with the same name, which one will it run? Which one will the shell object to? Which one should the shell object to. If a virus/SUID program overwrites a simlink, no problem, but ift it traces the simlink to the executable, and then over writes that...