The main problem with piracy isn’t really that it is surprising to the immediate users, since they can always read the docs (assuming it is mentioned there); the problem is that it is surprising to users who don’t know they are using the package when it is a dependency of a dependency of a dependency etc. Currently, if any package in a user’s full dependency tree uses InMemoryDatasets, then the behavior of Base functions changes everywhere – and they very well might not know they are depending on InMemoryDatasets! (Consider the user who hasn’t seen this Discourse thread, for example). This could cause all sorts of bugs, since other code (and other packages) will expect those functions to not have been pirated. In other words, it’s non-composable.
I think this makes sense given the wide-ranging consequences of type piracy, especially if we had a reliable and robust check. File an issue in RegistryCI?