Das liegt vermutlich daran, dass bei Nachfahren von TStrings die virtuelle Methode CompareStrings aufgerufen wird, das ist etwas langsamer als ein direkter Stringvergleich...
Delphi-Quellcode:
function TStrings.IndexOf(const S: string): Integer;
begin
for Result := 0 to GetCount - 1 do
if CompareStrings(Get(Result), S) = 0 then Exit;
Result := -1;
end;