Digging into this it seems completely arbitrary.
Templated GetComponentByClass simply calls class templated FindComponentByClass.
template
T* GetComponentByClass() const
{
return FindComponentByClass();
}
But if you want to get components implementing an interface, you either use FindComponentByInterface for a single component (returns AActor*) or GetComponentsByInterface for multiple components (returns TArray). There isn’t a GetComponentByInterface or a FindComponentsByInterface.
I’d chalk it up to another one of UE’s “constant iteration” pitfalls.