@ShuffleBox, could you check the number of packages in your F32 repository after it synced successfully with the immediate policy? Do you have 55326 or 55327?
The gist of the problem is: one package (sagemath-doc-en-9.0-2.fc32.x86_64.rpm) has a lot of files ~360 000 and it doesn’t fit in the max size of the mongodb document.
I think that the immediate policy continues sync process and likely prints a log statement that there was a failure for that package, while on_demand policy fails in such case and stops the sync process.
I filed a Pulp upstream issue https://pulp.plan.io/issues/7449, so other users were aware of the problem with this repository.
So to workaround the sync failure, as you found out, you can sync with immediate policy. If you need that specific package, unfortunately, there is no workaround for that case.