Comments

implicitly scope-specific, if the same module is imported by different other modules

explicitly scope-specific, via -Scope Local (or -Scope Global).

By contrast, certain aspects of module handling are currently invariably session-global, seemingly due to behind-the-scenes session-global module caching:

The ScriptsToProcess module manifest key is only honored once per session, namely in whatever scope happens to import the module first.

Remove-Module - which doesn't have a -Scope parameter - session-globally unloads a module, so that different scopes that had imported the module scope-locally later cannot unload that module anymore, which means that all its exports linger.