I think both approaches would work just fine, but I’ve never taken the component route for these types of things. To me spawning the actor in the world is the intended way to handle this. You might run into some issues trying to get something to work in a way it wasn’t intended. I’ve had issues with some components and activating/deactivating them. Not sure what the actual issues were but I’ve submitted bug reports, so I tend to stay away from them except the basic ones like ProjectileMovement. In my mind (and this may just be me personally), the components work best for behavioral code, and actors are for things that are going to spawn in the world and do stuff.
If I was going to create a Raftesque hook tool. I would create a class for it extending Actor (or extending a ‘Tool’ class that extends Actor), add a skeletal mesh to it that supports a few animations, create a socket on the hand of the character model (assuming first person, you’ll probably have only 1 or two of these), and attach it to that socket when its equipped.
This is a very straightforward way to implement equipment and I’ve had good success with this method.