The behaviour here goes way back to the early days of NCrunch, though I expect there may still be area of the toolset where this still applies.
Basically there are/were build tasks that would include references to system assemblies (which were inside Program Files), and if we copied these into the workspace or introduced assembly references directly into the workspace project, it would cause the build to fail with obscure errors. MSBuild is unfortunately full of this sort of thing, particularly when you imagine trying to support every major toolset released in the last 20 years.
So it's like this for a reason. The central issue is that it isn't easy to arbitrarily tell the difference between which assemblies should be explicitly referenced, and which should be implicitly referenced. Using their root directory has worked pretty well until Unity decided to do something different.
I'll take a look to see if there is something I can do to resolve this problem, but it would require a code change and there is a lot of work in the pipe at the moment. Probably I'll just whitelist any assembly with Unity in the name. For the time being, I recommend moving the assemblies as a workaround.