Can I broadcast HR just during a specific activity? It's helpful for indoor ride/run (Zwift), but I don't want to do that when running outside.
Well worth submitting a feature request to Garmin and asking them for the ability to broadcast HR during an activity that can be set per activity. As you've found out, currently it's all or nothing.
If you are regularly active then you will likely be charging your watch frequently. In which case leaving it on probably is not going to be really noticeable in terms of battery consumption. Yep, that's a very sweeping statement but mine stays active over winter when I go indoors on the wind trainer and I'm not aware of a significant battery hit. But I do charge once or twice a week depending on how active I've been.