Рефлексия разрешает типы в рантайме: вызовы TypeOf, ValueOf, Field требуют диспетчеризации и часто приводят к боксингу (аллокациям). Дженерики генерируют специализированный код при компиляции, без рантайм-проверок.
Если типы известны при компиляции, дженерики или явный код предпочтительнее. Рефлексия оправдана, когда тип известен только в рантайме (сериализаторы, плагины, ORM).