Only the Hostx86\x86 and Hostx64\x64 directories include dependent DLLs for the respective compilers. The cl.exe's from the other subdirectories of Hostx86 and Hostx64 are supposed to have the host-native compiler directory in PATH in order to find dependent DLLs.
If an explicit toolchainInstallPath is set (such as is the case with Qt Creator MSVC profiles), then running cl.exe will fail with "Process crashed" (really, STATUS_DLL_NOT_FOUND) because cl.exe from %VCINSTALLDIR%\Tools\MSVC\14.10.25017\bin\Hostx86\arm includes relatively few DLLs and relies on the ones from %VCINSTALLDIR%\Tools\MSVC\14.10.25017\bin\Hostx86\x86 being present in the PATH (as the vcvars*.bat script sets up).
Effectively this means that only the ARM compiler is broken because it's the only target for which only cross-compilers are available (meaning dependent DLLs do not exist in the same directory), and we always pick the native compilers where possible.
Setting an explicit toolchainInstallPath is supposed to work. Presumably we should add the corresponding host-native compiler's directory to the PATH for the non-native compilers.
Logic could go something like this: if the path of cl.exe ("X") ends with "Host[x86|x64]
[x86|x64|arm|arm64]" and the first architecture is not equal to the second, add ("X") to the PATH, with the second architecture replaced by the first.