Concretely, Terraform starts one provider plugin process per provider block, and then uses it to handle all of the resources associated with that provider configuration. Therefore they can all work with the same mutex.
If a module includes its own provider block (which is a deprecated pattern, but still supported) then it would have a separate plugin process, and so would not have access to the same mutex.
With all that said then: if a particular provider relies on a mutex to synchronize conflicting operations on different resource instances then it should probably mention in its docs that it’s safe only if all of the resource instances are associated with the same provider block.