The zsh rm command doesn't with too many (say, 100 000) files, execve() fails with: Argument list too long. This works and it is relatively fast (runs rm in big batches): find ... | xargs -d '\n' rm --
find . -type f -name '*foo' | perl -ne 'print;chomp;unlink'
And it has the same -0 switch as xargs to pair with find's -print0.Not helpful in this case since you have other options, but maybe helpful for things like bulk touch, chmod, etc.
zargs -- **/*(m+7) -- rm
I updated my answer above accordingly.