I don't see any contradiction here.
It's perfectly fine if you decided that you need that instance and
introduced it in your code. It would be very strange if someone said you
shouldn't do that.
I also don't mind package authors (ab)using IsString to make their
libraries more convenient to use. If someone doesn't like that library,
they doesn't have to use it.
What I am against is putting that instance into base, thus making it
impossible to opt-out.