Components are great if you only ever need one implementation of a particular calling convention.
Interfaces are great if you need many different implementations of the same calling convention. If you have sound effects, particle effects, animation effects, and other kinds of effects that all have a StartEffect() interface, you can’t easily implement that with a component. You’d have to make an EffectStartComponent that you added to each effect, and then bind an event dispatcher to the actual class-specific effect starting function, which is a lot more work than just defining and implementing the interface for StartEffect().
The C++ toolbox is big. Blueprints add an even bigger set of tools. As programmers, its our job to choose the right tool for the job in each instance. And, sometimes, the job changes, and thus we need to put down one tool, and pick up another tool. Being too overly attached to any one particular tool is seldom helpful.