Is it "always" correct to NOT extend the String prototype? No.
Like all things it depends. If you are writing a library for others to use then you shouldn't be extending globals for the reasons you have given. And if you do, you need a good reason and make it very clear to the user. If you are writing an application or a closed-source library, then it is usually safe to extend globals because you are in complete control. Like others have said in the String case, it makes its a lot easier to read the functions that do string manipulation.
The only absolute rule in software engineering is that there are no absolute rules.