Deixe-me mencionar primeiro que -print0 não é padrão e não é a melhor solução. Melhor é usar "execplus", por exemplo,
find dir -type f -exec cmd {} +
Seu principal problema, entretanto, é que os operadores têm precedência e seu -print é "anded" apenas com o último nome primário.
Portanto, o método correto é colocar os primários -o red entre parênteses:
find dir ( -name '*.x1' -o -name '*.x2' ) -exec cmd {} +
Você pode, claro, adicionar mais operadores -o-type, se precisar.