Вызов Assembly.GetTypes()
возвращает все типы и интерфейсы, определенные в сборке.
Вызов Type.GetGenericArguments()
возвращает все универсальные параметры, указанные для универсального типа. Это может быть не самым ясным объяснением, пример может помочь:
var type1 = typeof(Func<>);
type1.GetGenericArguments(); // [ typeof(TResult) ]
var type2 = typeof(Func<string>);
type2.GetGenericArguments(); // [ typeof(String) ]
var type3 = typeof(Tuple<string, int, bool>);
type3.GetGenericArguments(); // [ typeof(String), typeof(Int32), typeof(Boolean) ]