It would be nice if this wasn't under startup so that it could be changed later on.
Definitely! But it's impossible because health_penalty is a property that needs to be set in the data stage, where all of the prototypes are defined (i.e. from the time you start Factorio until you see the menu). We don't have write access to the prototypes in the control stage (once you've started a new game or loaded a saved game) anymore, so we can't change individual prototype properties once a game is running.
The only way I to accomplish this is quite expensive: I'd have to make duplicates of the shotgun and sniper turret prototypes with different values for health_penalty. When a game is loaded, I'd have to read the setting, and if it has changed, exchange every turret where the setting has changed. Now, turrets are not rocket-silos where you only have a few entities -- turrets are usually put up in bulk along the factory perimeter. If you have a huge factory, there may be a lot of turrets that need to be replaced. Imagine this happened in a multiplayer game where you have players on different forces! It would increase the loading time immensely.
But perhaps you just don't understand correctly what the term "startup setting" really means? It doesn't mean you can't change the setting once you've started a game -- it means Factorio must restart when such a setting has changed because it has to rebuild the prototypes. So if you start Factorio, change the setting, restart, and load your game, the turrets will automatically use the changed attack priority for all turrets of all forces. I think that really is the best way to do it.