Nothing has changed with the API that I am aware of. Are you sure you're including the body like this?
POST https://graph.microsoft.com/beta/servicePrincipals/{id}/synchronization/jobs/{jobId}/restart
Authorization: Bearer <token>
Content-type: application/json
{
"criteria": {
"resetScope": "Full"
}
}
Also, after restarting you should probably hold off on using provision on demand, let the restarted job run without any interference. I can't think of any specific things that could go wrong here, but it seems like an unnecessary action on your part in any case since one would expect that either your POD action happened before the restart w/ full resetScope was processed (making it ineffective), or it would take place after (meaning the user was already reprocessed with the same rules one would expect the POD attempt to apply).