O $
no início da string em:
echo $'Hello World\nThis is a new line'
faz com que as seqüências de escape sejam interpretadas.
Manual de referência do Bash [diz]
Palavras da forma $ 'string' são tratadas especialmente. A palavra se expande para cadeia, com caracteres de escape com barra invertida substituídos conforme especificado pelo padrão ANSI C. ..
..
O resultado expandido está entre aspas simples, como se o cifrão não estivesse presente.
Mas
echo $"Hello World\nThis is a new line"
é completamente diferente. Este [artigo] sobre tradução específica do código do idioma diz:
Uma sequência de aspas duplas precedida por um sinal de dólar ('$') fará com que a sequência seja traduzida de acordo com o código de idioma atual. Se o código do idioma atual for C ou POSIX, o cifrão será ignorado. Se a sequência for traduzida e substituída, a substituição será citada duas vezes.
Nota: IIRC ambos $'string'
e $"string"
pode não encontrar suporte entre diferentes reservatórios. Não apenas as pessoas de outros reservatórios olham para eles com curiosidade, mas também debatem se isso pode ser evitado quanto à portabilidade do script.