Quando você usa um pipeline, o shell executa cada comando no pipeline simultaneamente e espera que todos eles sejam concluídos antes de ir para o próximo comando. Isso é explicado na documentação :
If the pipeline is not executed asynchronously (see Lists), the shell waits for all commands in the pipeline to complete.
Quando o acima se refere a executar o pipeline de forma assíncrona, está falando sobre a execução de todo o pipeline em segundo plano com &
.
Quando você usa a substituição de processo, o shell não aguarda a conclusão. A documentação diz simplesmente:
The process list is run asynchronously, and its input or output appears as a filename.