Wenn das bei einer generischen Liste gehen würde ...

In meinem D2010 gates.
I'm very sorry ... geht auch hier ...
(wieso habe ich nur im Kopf gehabt, dass das nicht geht ... seltsam)
Ich halte das für einen Designfehler, und ich glaube, Du auch. Denn ein *TComparer* vergleicht nur und wird für das Sortieren verwendet.
Ich glaube bei Strings würdest du es wieder nicht für einen Designfehler halten

Den Comperator zu verwenden ist der universellere Ansatz. Eigentlich fehlt dem Ding in diesem Fall ein Rückgabewert für "nicht vergleichbar".
Am wichtigsten ist
imho, das so etwas gut dokumentiert ist. Das scheint es
nicht
zu sein*
* OK, dass ist für viele Bibliotheken wohl ein Wunschtraum. Soll also kein Bashing werden 
Nun ja, der Standard Comparer vergleicht einfach nur den Pointer-Wert ... da wäre es auch nicht tragisch, wenn die gleiche Instanz auch immer den gleichen Index zurückliefest ...
Man muss es ja nur wissen, wie die Uhr drinnen tickt, dann fällt man auch nicht auf die Nase
Kaum macht man's richtig - schon funktioniert's

Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)