Para o shell executar o comando
sudo echo $(whoami)
ele deve primeiro descobrir com que argumentos chamar sudo com. echo é apenas uma string simples, então o shell não faz nada, mas $(whoami) é uma substituição de comando que precisa ser expandida. Isso é feito executando whoami e substituindo a substituição de comando por sua saída. Então, ele está pronto para chamar sudo .
Isso significa que sudo será executado com echo e a saída de whoami (que foi executada como seu usuário sem privilégios) como argumentos.
Se você quiser executar whoami com sudo , poderá colocá-lo em um script e executar o script com sudo , como você fez, ou poderá usar
sudo sh -c 'echo "$(whoami)"'
Aqui, o script sh -c é executado como root, portanto, whoami também será executado como raiz.
O ponto é que o shell que executa whoami está sendo executado como usuário root.
O shell que executa whoami no primeiro comando, sudo echo $(whoami) , é executado como usuário comum, não como root.