com
#!/bin/bash
set -f
mono app.exe "$@"
set -f não tem efeito porque a matriz de argumentos com aspas duplas ( "$@" ) não sofre mais expansões.
Se "$@" contiver um argumento cujo valor seja * , ele passará para mono app.exe inalterado.
O problema é que o shell que está chamando este script de wrapper irá querer expandir o asterisco, já que set +f é o padrão.
Você precisará de set -f neste shell de chamada, e não no wrapper.
Com set +f (padrão), a barra invertida ( \* ) é outra alternativa à cotação ( '*' ou "*" ) que você pode querer considerar.