Similarly knowing that the functionality you’re adding is for a Controller as opposed to a Character could be very important as well. You have these restrictions built into your own engine. Look at BehaviorComponent and how all the Behavior Tree nodes require GetAIOwner to return a valid AAIController that is a cached value of the Actor the Component is attached to.
If I’m creating a Component, I’m creating functionality for a subset of Actors, but that doesn’t mean it’s appropriate for all Actors. Sometimes that subset is much easier to define as Character or Controller or even AIController.
This isn’t counter intuitive at all to how Components should work. It’s a required feature in order for Component Systems to function properly.