Isso reduz todos os elementos de caminho anteriores, assim como basename $0
faria.
O ##
tenta encontrar a expansão correspondente mais longa do padrão de prefixo:
$ x=/a/b/c/d
$ echo ${x##*/}
d
$ basename $x
d
Da página do manual:
${parameter##word}
Remove matching prefix pattern. The word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
the beginning of the value of parameter, then the result of the
expansion is the expanded value of parameter with the shortest
matching pattern (the ''#'' case) or the longest matching pat‐
tern (the ''##'' case) deleted.
A razão para usar ${0##*/}
é que ele não envolve uma chamada de programa externa, mas está obscurecendo o que está acontecendo.