With mage armour he should be at least, if not more survivable than, Shadowheart at the start (her stats are terrible). But even I often forget to cast it a lot, and there would be people who don't even understand how it works properly.
My theory is though that the AI tends to prioritise characters with low AC and HP, and as a wizard Gale tends to fall into this category (especially without mage armour).
???
Shadowheart is a beast of a tank from lvl 3 on, her crappy dex makes her terrible at lvl 1 and 2, but at level 3 she will out tank any of the other companions, even tankier than lae'zel when she's geared towards tanking which would be incredibly wasteful seeing as Jump and a 2 hander is absurdly broken. You don't have much need for a healer when you can jump an insanely huge distance then action surge, cleave, menacing strike to kill one cannon fodder mob and kill/nearly kill and potentially fear an actual challenging mob.
Enemies just straight bee line for gale most of the time though, which makes me think the AI is far too aware of who can do what in your party. Reminds me of how DOS2 had its issue with every single enemy in the game knowing that Fane was undead despite the line that wearing a mask/cowl/helm supposedly hides that fact (and I never found a mod that could fix that behaviour despite claims to contrary). Like how on earth would a bunch of spiders know to phase past my party to lynch Gale, only the big spider in that fight didn't and that was only because there wasn't enough room to reach him past all the other spiders, as soon as enough of them dropped, sure enough, the big spider was straight on Gale. I think Gale's common deaths are simply a sign that combat AI needs to be better tailored to the mobs that are using it, animals and any creature with a low enough INT score should not be picking or differentiating between targets, they should be attacking the nearest threat every single time. Targeting the lowest AC or HP character is a luxury of intelligent opponents, such considerations should not be a part of the baseline AI scripting.