I don't know if it is related, but there used to be a limit in shell parameters expansion in exec, that's why xargs was so handy when "rm *.txt" wasn't possible.
At least in Bash * still won't work if you have a lot of files with long names:
$ for i in {1..99999}; do touch "this is a really long filename so lets see what bash does or does not will it fail or will it work"$i; done
$ rm *
bash: /usr/bin/rm: Argument list too long
That was changed some years ago: https://lkml.org/lkml/2007/8/19/44