Why I must use Execute_FunctionName in interfaces?

It’s so awkward to use this
IMyInterface::Execute_MySuperGetter(MyObj); instead of MyObj->MySuperGetter();

Maybe first variant is better to use? Why this?

I request first variant for BlueprintNativeEvents.

Thanks!