Lyxen
Great Old One
I think all this story goes to show, other than questioning how the PCs got off two fireballs and the giants only got in a couple of attacks, is that D&D is by nature and design unpredictable to a degree. Sometimes fights that on paper look difficult are not really a threat, other times encounters that look easy are a challenge.
I think that's part of the fun and I don't think any calculation is going to fix that. In addition you can't please everyone.
Exactly, that's were codifying encounters for computation is bound to fail in 5e. 4e, which went further than any previous editions simplified this by having maps where starting positions were indicated, which meant that a number of DMs teleported characters and monsters on the map to the starting positions when combat started so that the conditions were as standard as possible. I'm not criticising that approach, but even in that case, initiative coud mean quite a bit of swinginess even before all the other dices started rolling.