Retomemos con un copy&paste del enlace que le compartí en #10:
Cita: 13.3.6 Los "mejores" saltos de página
CSS2 no define cuál de todos el conjunto de saltos de página permitidos debe usarse; CSS2 no prohibe que la aplicación del usuario realice el salto en cada posible punto de corte, o que no lo haga en absoluto. Pero CSS2 recomienda que las aplicaciones del usuario observen las siguientes reglas heurísticas (en tanto reconoce que estas son a veces contradictorias):
Producir los menores cortes posibles.
Hacer que todas las páginas que no terminan con cortes forzados parezcan tener aproximadamente la misma altura.
Evitar el corte dentro un bloque que tiene un borde.
Evitar el corte dentro de una tabla.
Evitar el corte dentro de un elemento flotante.
Así que tras esa advertencia, ¿qué tal si ayuda al css con algo de programación?
Genere una tabla nueva cada X filas. Esto es, vía php cierre la tabla cada X filas y cree una nueva para los siguientes.
De tal manera que el número de filas (la suma de sus alturas) sea inferior al espacio que que le quede deje libre en el a4 el la cabecera y el pie.
Claro que esto sólo será prosible si la información de cada celda es homogénea. Esto es, que ocupen el mismo nº de líneas horizontales.