Мало того, что вы можете покончить с боксом, общие реализации несколько быстрее, чем неуниверсальные аналоги со ссылочными типами из-за изменения базовой реализации.
Оригиналы были разработаны с учетом конкретной модели расширения. Эта модель никогда не использовалась (и в любом случае была бы плохой идеей), но проектное решение заставило несколько методов быть виртуальными и, следовательно, не поддающимися моделированию (основываясь на текущей и прошлой оптимизации JIT в этом отношении).
Это решение было исправлено в более новых классах, но не может быть изменено в более старых классах, если оно не является потенциальным бинарным изменением.
Кроме того, итерация через foreach в List <> (а не IList <>) выполняется быстрее из-за того, что перечислитель ArrayList требует выделения кучи. По общему признанию это привело к неясной ошибке