Parser for tab-delimited data as a subclass of StringReader
Conceptually, I do not see anything inherently wrong with subclassing a framework object, particularly since many of them provide virtual/abstract members specifically to allow it.

In this case, it may be better to wrap a TextReader object instead of inheriting from StringReader.  This would allow you to provide tab delimited reading for multiple data sources instead of limiting yourself to in-memory strings.  For example, you could still pass in a StringReader for reading strings, but you could also pass in a StreamReader if you wanted to support reading from files instead.

Additionally, I noticed that HasMore is dangerous to call due to its side-effect.  It is not immediately obvious to a caller that checking HasMore would alter the reader's current position.  I would suggest using Peek instead.

You would then need to update _nextLine elsewhere.  You could have it be a side-effect of calling ReadFields.  Or, perhaps better, you could add another method (e.g., AdvanceLine) that is simply responsible for moving the reader to the next line.