Activator.CreateInstance(Type) выкинет Exception если у класса нет конструктора без параметров. Для вызова конструктора с параметрами нужно применять Activator.CreateInstance(Type, object[])
Вместо того чтобы искать MethodInfo можно просто использовать Type.InvokeMember(string, BindingFlags, Binder, object[]) где BindingFlags указывает что именно мы вызываем(Get/SetProperty, InvokeMethod etc) а Binder используется в случае когда нужно принудительно выбирать вызываемый метод(когда в параметрах есть var etc)
При таком подходе, все плагины грузятся в AppDomain хост-приложения и выгрузить их можно, только вместе со всем приложением.
В тоже время, находясь в домене хоста, плагины могут «напрямую» общаться с элементами хоста.
Если плагин загружать в другой AppDomain, необходимо организовывать cross-domain коммуникации.
Позднее связывание в C#