A exclusão da substituição do comando $(...) remove a falha para mim no 5.10. Isso sugere que o que você está vendo é o efeito de . analisar todo o arquivo antes de ser executado e encontrar um erro nessa sintaxe não suportada. Por outro lado, o script está sendo analisado linha por linha, portanto, ele sai antes que o erro de sintaxe seja percebido.
Experimentalmente, você pode inserir outros erros de sintaxe e ver o mesmo comportamento: . falha no início e sh é executado na linha malformada.
Por quê? Eu não sei. Não parece ser especificamente documentado em qualquer lugar que eu possa encontrar. A página man apenas diz para . :
. filename Read and execute commands from filename and return. The search path specified by PATH is used to find the direc- tory containing filename.
A documentação de <<word diz que "entrada de shell é lida até ...", o que talvez implique uma análise minimalista, mas não vejo nada explícito em lugar algum. A análise de linha por linha é bastante comum para scripts de shell em geral, e é o que o Bash faz nos dois casos, por exemplo.
Why doesn't -x work when sourcing a file?
Ele funciona, desde que os comandos realmente iniciem a execução. Nada é impresso durante a fase de análise.
Para este exemplo específico, usar a substituição de comando ' ... ' -style funcionaria, mas o script real é provavelmente mais complexo.