Phill,
From a language perspective, I would imagine that while it is a
reference type, it is also a primitive type of sorts, and therefore, should
be sealed. From a more practical standpoint, I assume there are a number of
optimizations that take place in the use of the string which they don't want
touched in a class derivation.
There is nothing to prevent you from creating another class with helper
methods that work on strings.
Hope this helps.