В чём разница между Invoke и обычным вызовом делегата через () в C#?
Для делегатов разницы между вызовом через d.Invoke(список аргументов) и d(список аргументов) нет.
При этом генерируется одинаковый IL-код: вызов через скобки транслируется в Invoke. (Проверка.)
Интересное синтаксическое отличие состоит в том, что проверка на null с Invoke-синтаксисом проще: d?.Invoke(список аргументов).
Документация: Common Patterns for Delegates / Handling Null Delegates.
Также для вызова через рефлексию вам понадобится использовать Invoke, т. к. скобки на уровне рефлексии никак не представлены.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей