I can't imagine somebody monkey patching exposing internals of a lib and blaming lib author for poor effects.
[0] Good luck with enforcing the One True Naming Convention.
It can still be using keywords like public, protected, private. Just make them non-binding. In similar manner how TypeScript types are non-binding. You can ignore them in any program that uses TS lib.
Yeah, the users aren't likely to be really limited these days.
1) A huge number of widely-used languages have reflection, so you can get at internal members if you really try.
2) For those languages that don't, just remove the keyword and recompile. Someone who's willing to take on the maintenance burden of directly using parts of the software marked by their author as "internal only do not use" is clearly willing to maintain such a minor fork.