Parece que é por causa das diferenças de fim de linha. O Vim é padronizado para as terminações de linha CR / LF no estilo DOS. Mas quando você está executando os comandos, você está vendo apenas o LF.
Eu sei que isso não faz sentido.
Mas eu estaria interessado em ver o que acontece se você :set shellpipe?=2>&1\|unix2dos\|tee
e :!ls -la