We've fixed this now - we needed to unseal the Site Page content type by running this powershell script for each subsite:
Connect-PNPOnline <SubsiteURL> -UseWebLogin
$contenttype = Get-PNPContentType -List <ListID> -Identity "Site Page"
$contenttype.Sealed =$false
$ contenttype.Update($False)
Invoke-PnPQuery
Note: Only use the -UseWebLogin if you have MFA enabled for your tenant otherwise remove it from the cmdlet.