I ran on a similar issue that was discussed in this forum thread
but no good solution was provided there.
The issue is that if you have two text fields in a detail band one below another, both with
"stretch with overflow" = true
"position type" = float
"remove line when blank" = true
"blank when null" = true
then there's a pagination problem (page break is inserted too early) if the first field is empty for any reason (e.g. the field value is null or printwhen is set to false).
If remove line when blank is set to false, then there is an empty space instead of the first text field, but the page break is inserted correctly.
Please find attached jrxml and screenshots demonstrating the issue.
My test case is very simple and trivialized (normally you don't setup text fields of such a height) but it happens in real life when you have lot of normal sized fields printed optionally. It happens also when using subreports instead of text fields.