Citado de la página de manual de bash, sección Command Substitution
:
Las líneas nuevas incrustadas no se eliminan, pero pueden eliminarse durante la división de palabras.
Un poco más allá, misma sección:
Si la sustitución aparece entre comillas dobles, la división de palabras y la expansión del nombre de ruta no se realizan en los resultados.
Por eso echo "$(cat /etc/passwd)"
funciona.
Además, se debe tener en cuenta que la sustitución de comandos por las especificaciones POSIX elimina las nuevas líneas finales:
$ echo "$(printf "one\ntwo\n\n\n")"
one
two
Por lo tanto, la salida de un archivo a través de $(cat file.txt)
puede conducir a la pérdida de nuevas líneas finales, y eso puede ser un problema si la integridad del archivo completo es la prioridad.