O shebang está funcionando e o cron não tem nada a ver com isso. Quando um arquivo é executado, se o conteúdo desse arquivo começa com #! , o kernel executa o arquivo especificado na linha #! e passa o arquivo original como um argumento.
Seu problema é que você parece acreditar que SHELL em um script de shell reflete o shell que está executando o script. Este não é o caso. De fato, na maioria dos contextos, SHELL significa o shell interativo preferido do usuário, ele é destinado a aplicativos como o emulador de terminal para decidir qual shell executar. No cron, SHELL é a variável que informa ao cron qual programa usar para executar as entradas do crontab (a parte das linhas após as indicações de tempo).
Os shells não definem a variável SHELL , a menos que ela não esteja definida quando eles são iniciados.
O fato de que SHELL é /bin/sh é muito provavelmente irrelevante. Seu script tem uma linha #!/bin/bash , então é executado por bash. Se você quiser se convencer, adicione ps $$ no script para fazer ps mostrar informações sobre o shell que está executando o script.