Consegui fazer usando o iReport 4 aqui. Não testei com versões anteriores.
Seu problema é similar ao exercício de lógica pra identificar se um número é par ou ímpar.
Na seção detail do seu relatório, coloque seus campos e abaixo deles coloque um elemento BREAK (tem na paleta do iReport).
Se você simplesmente colocar este BREAK e não configurar nada, ele vai gerar um registro por página. É interessante você fazer este teste.
Pra quebrar página de 3 em 3 registros, coloque a seguinte expressão na propriedade “Print When Expression” do seu componente BREAK:
($V{REPORT_COUNT} % 3) == 0
A quebra só será realizada (exibida) quando o resto da divisão inteira do número do seu registro atual por 3 for igual a 0. Ou seja, vai quebrar a página de 3 em 3 registros.
Substitua o número 3 na expressão acima pelo número de registros que você quiser exibir por página.