Isso não funciona, porque encontrar chamadas exec (3) diretamente e, como tal, não interpreta a linha de comando como um shell faz (para configurar o pipe).
Quando eu preciso fazer algo assim, eu geralmente coloco as coisas que quero em um script, para que eu possa fazer o script -exec {} \ ;. Outra opção é
find . -type f -name "*.jar" -exec sh -c "jar -tvf '{}' | grep MyClass" \; -ls
FWIW, meu findClassInJar pessoal é
for x in 'find . -name "*.jar" -o -name "*.zip"' ; do if unzip -l $x | grep -q $1 > /dev/null ; then echo $x ; fi ; done
Não funciona com diretórios com espaços, mas eu não faço isso em um projeto.