Quando você simplesmente atribui um valor a uma variável, a expressão $(...) é avaliada, a menos que esteja entre aspas simples (ou com escape de barra invertida). Para entender, tente e compare estes dois:
A=$(pwd)
echo "$A"
B='$(pwd)'
echo "$B"
O valor de A torna-se imediatamente a string /home/yourusername e, obviamente, não é lembrado de onde essa string vem, ela permanece a mesma, mesmo que você altere o diretório. O valor de B , no entanto, torna-se a string literal $(pwd) sem ser interpretado.
Agora, no valor de PS1 , algo especial acontece: sempre que o prompt é impresso, certas construções especiais são interpretadas, por exemplo, a substituição do comando $(...) é executada exatamente como aconteceu acima na atribuição à variável A . Obviamente se seu PS1 contiver a string literal do seu diretório home (como acima com A ), então não há como alterar. Mas se ela contiver a string $(pwd) (como acima com B ), ela será avaliada sempre que o prompt for impresso e, portanto, o diretório real for exibido.