I haven’t seen either Poly’s HP system nor unreal sensei’s game mode, but regardless when you design a system/program there are some desirable traits that makes your life a whole lot easier when your system gets bigger.
One of these important traits is coupling. In simple terms this means how reliant are parts of your system on each other. Generally less reliant (loose coupling) is preferred because you can change one part without needing to redesign/fix the whole thing. Also if one part of your system fails for whatever reason you don’t end up with a cascading failure of your whole system.
Generally speaking HP system is not really that related to game mode. Sure you may lose if your hp reaches 0, but this can be done using communication between different parts of system. You don’t need to integrate the whole HP subsystem into your game mode. You can implement it as a very loosly coupled different system which is a better choice in most cases.
Another important aspect is extensiblity/reusability. Let’s say you end up adding some kind of enemy with their own HP which might work identical to the existing HP or might differ slightly. In either case if it is an actor component you just attatch it to the enemy and now they have a fully functioning HP system as well(reuse) . If it works differently compared to the existing hp system, you just inherit the existing one and override whatever functionality you need(extension) . You can’t do this if the HP system is part of game mode. If it is part of player blueprint you can inherit the whole player BP but this will also inherit every other functionality of player which you might not need/want for your enemy BP.
These stuff might not matter that much in a very small scale project but definitely will come in handy as your project grows.