Ja, gibt es: in der Liste kannst Du mehrere Einträge mit dem gleichen Key haben, im Dictionary dagegen immer nur einen. Außerdem ist die Semantik des Indexers eine andere: dicAlleKunden[1] liefert den Kunden zum Schlüssel 1, listAlleKunden[1] liefert den zweiten Eintrag in der Liste, egal welchen Schlüssel der hat.
man könnte fast sagen, das Dictionary ist ähnlich einer Datenbanktabelle mit einer Unique-ID... und an dem Beispiel der Kunden würde das Dictionary besser passen :)
Das Dictionary ist auf Zugriff über den Schlüssel optimiert. Wenn du also den Kunden mit id 42 suchst kann die Performance gar nicht gleich sein, weil du im ersten Fall eine Liste durchsuchen musst (O(n))
Sollte so sein, da ja ein Direktzugriff auf einen Eintrag im Dictionary direkt über den Schlüssel ausgeführt werden kann. Bei der Liste selbst musst du ja erst einmal über die Einträge iterieren, bis du zum gesuchten kommst. ... außerdem ist bei der List<KeyValuePay<,>> die Gefahr groß, mehrere Einträge mit gleichem Key zu haben :)