Em uma substituição de comando delimitada com $(…) , o que está dentro dos parênteses é analisado da mesma maneira que um comando de nível superior (exceto em alguns casos de canto envolvendo parênteses de fechamento desequilibrados). O que está dentro dos parênteses é um trecho de shell comum, não há nenhuma expansão de contrabarra adicional sendo feita.
O comando echo '\' imprime três caracteres: duas barras invertidas e uma nova linha (assumindo um comando echo que não faz expansão de barra invertida). Portanto, o resultado de uma substituição de comando $(echo '\') é a string de dois caracteres \ (a nova linha final é removida, a substituição de comando sempre faz isso). Como você usou a substituição de comandos dentro de aspas duplas, nenhuma outra expansão é executada: a parte da palavra resultante é \ .
Em echo "$(echo '\')$" , a substituição do comando gera uma única barra invertida. Sua contribuição para o argumento de echo é a string \ . O seguinte $ é seguido por um caractere que não pode iniciar um nome de parâmetro, portanto, ele se expande para si mesmo. Assim, o argumento para echo é a cadeia de dois caracteres \$ . As strings com aspas duplas não são mais expandidas, não há nada que possa fazer com que a barra invertida seja interpretada como um caractere especial (exceto alguns tipos do comando echo ).
Você pode procurar as regras de expansão completas nos manuais de shell e em outra documentação, com vários graus de (in) legibilidade. A especificação POSIX não é tão ruim quanto os padrões (louvor).
P.S. Como garantir que a string seja interpolada na substituição 'sed' escapa de todos os metacarismos