Puoi sempre seguire quanto indicato nela Guda GuIT nel capitolo dove si descrive al formazione delle pagine; si possono mettere i comandi per tracciare e per non tracciare le pagine con meno righe (almeno una, e poi si può leggere nel file .log che cosa ha fatto per comporre quella pagina; lettura poco piacevole, ma ogni riga del tracciato mostra larghezza, altezza e profondità della pagina, quanto manca alal fine e, specialmente alla fine mostra le bruttezze (i costi) che is hanno a terminare la pagina lì, piuttosto che là.
Non è detto che scopri il motivo di quel comportamento, ma onestamente a me è successo solo per evitare orfane e vedove (le vedove in particolare sono fastidiose e sono quelle che maggiormente provocano quel tipo di problema).
\alla fine di un capoverso di una di quelle pagine con meno righe puoi provare a mettere un comando \enlargethispage*{,spazio>}; in condizioni normali lo spazio dovrebbe essere espresso come multiplo intero (piccolo, 1 o 2) dell’avanzamento di riga \baselineskip; ma nel tuo caso potrebbe bastare di meno.
Per modificare globalmente le penalità per le righe orfane e le righe vedove, io mi sentirei più tranquillo a mettere le definizioni di Enrico all’inizio del documento, piuttosto che nel preambolo, perché l’opzione italian di babel fa cose strane (colpa mia) con le penalità per le orfane o le vedove.