O que acontece pode ser visto com set -x
:
:> set -x
:> cat $(echo this\ list)
++ echo 'this\' list
+ cat 'this\' list
:> cat this\ list
+ cat 'this list'
A diferença é que 'this\' list
é dois argumentos, ou seja, cat
tenta ler um arquivo this\
e outro arquivo list
mas 'this list'
é apenas um único argumento, ou seja, um nome de arquivo diferente.
Você precisa:
:> cat "$(echo this\ list)"
++ echo 'this list'
+ cat 'this list'