Hi John Yaist
This is very likely an ArcGIS Python API bug.
In the API source code for the query function (layer.py, Line 650), it does not test the exceededTransferLimit property in the response, the code assumes the query always return the specified number of records when possible. This is not the case for spatial filter....
exceededTransferLimit was introduced in ArcGIS Server 10.3.1, please see the details in the following link
In some cases when using the resultOffset and resultRecordCount parameters, the exceededTransferLimit property may be included in the query results even though the value specified in the resultRecordCount has not been exceeded. This is due to internal spatial index filtering of the query results. For this reason, you should always rely on the exceededTransferLimit property to determine if you should page through results rather than relying on the number of results returned from each page. In some extreme cases, zero results can be returned but the exceededTransferLimit property will be returned. In these cases, you should continue paging through your results until exceededTransferLimit is no longer returned.
Query (Feature Service/Layer)—ArcGIS REST API: Services Directory | ArcGIS for Developers
Hope this makes sense.
Regards
Simo