Com a primeira invocação do seu script
$ bash my.sh *
o nome do arquivo globbing é executado pelo shell antes de chamar o script.
Com a segunda invocação do seu script
$ bash my.sh "*"
o nome do arquivo globbing é executado no script ao executar echo $@
.
Para evitar isso, aspas duplas $@
nessa linha:
echo "$@"
Outras leituras: Implicações de segurança de esquecer de citar uma variável em shells bash / POSIX