Duplicate of BUG-000091352:
Will not be addressed.
Pagination with spatial filter requires two steps - first it gets features whose extents are intersected by the extent of the search geometry - that happens at the database level along with the pagination -- as a result it returns some candidate-features with false positive. In the 2nd steps, it weeds out all candidate features with false positive; therefore the number of features in the result may not match the recordCount.
Check for the exceedTransferlimit flag in the JSON result to find out whether more features are available or not.