child actors vs actor components

I’m working on a game where we have already an architecture in place using child actors for many things which I think should actually be components. For example we have things like JumpAbility and CrouchAbility which are created as child actors of a character. Our character class spawns these abilities in PostInitializeComponents by calling something like…

ACharacterAbility* newAbility = GetWorld()->SpawnActor<ACharacterAbility>( abilityClass, spawnInfo );
newAbility->SetOwner( this );

This does work, but it seems wrong to me. What advantages/disadvantages are there to an architecture like this?