Yes, the label does introduce redundancy in some cases, but that is because the use of printString has to be rethought :)
printString was used for a long time as a primary inspection tool. Because of that it tries to do too much (like adding the class name), and it is certainly not suitable for a label.
gtDisplayString is meant for labeling the content of the object. It is used also for things like a list. As soon as you will do something with your objects, you will want to have something smaller. There is no need to have the class part of that string. Relying on that convention is brittle, as it is easy for people to not have the class name in there. But, for an inspector, having the class at all times is a prerequisite, so that will be displayed always separately (to ensure that the right information is offered).
gtDisplayString relies on printString by default, so people can provide the labels at their convenience.
Cheers,
Doru