Você precisa remover os backtics em torno do comando tar . Você também pode querer canalizar o ls através do xargs para ter certeza de que o bash pega todos os diretórios corretamente:
for f in 'ls -d */ | xargs'; do tar -cvzf ${f%/}.tar.gz $f; done
Os backticks estão capturando a saída de tar e tentando executá-la como um comando em cada iteração do loop. A primeira coisa que o tar imprime quando você usa uma opção -v são as permissões em cada arquivo (por exemplo, drwxrwxr-x ). Neste caso, você quer bash para executar o comando tar, não capturar a saída.