I've just tested this on PowerShell v1.0. Setup is as follows:
 Id CommandLine
 -- -----------
  1 $msbuild = "C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe"
  4 $a = "C:\some\project\or\other\src\Solution.sln /target:Clean /target:Build"
.
This line fails with an unintuitive error message:
 Id CommandLine
 -- -----------
  5 & $msbuild $a
.
This line fails because & expects the first argument to be the command itself.
 Id CommandLine
 -- -----------
 10 & "$msbuild $a"
.
This line works:
 Id CommandLine
 -- -----------
 16 cmd /c "$msbuild $a"
.
Please explain. I'm more interested in why the & syntax isn't working, than an MSBuild-specific workaround.