Question about the <PROVIDER> part at the end of module registries' source strings

According to the following article:

A public or private module registry string must have a part at the end of it:
//
///

Why do we need to specify at the end of the string?

Does this mean a public module registry is limited to only one provider, and it cannot use other providers such as “azuread” or “random”?

Any help would be appreciated,