They get offended when I tell them all the reasons why they suck.
Assuming the above is only slightly hyperbolic, how do you thread the needle when giving feedback to you GM? What does "healthy constructive criticism" look like?
Well, the words are there - it is "healthy" and "constructive".
Saying, "you suck" is neither of those things. To be constructive, feedback generally has to be positioned such that it can easily be used to grow and improve.
As others have suggested, and as we often say about posts -
don't make it personal, about them. Don't accuse them of failure. Make it about the situations or your own feelings.
In addition, it typically helps to tell them about the perceived problems,
NOT your personal preferred solution.
"You are bad at balancing fights, and always make the monsters too weak," leads them to feel bad about their own skills, and tends to put blinders on them about what they should do about it.
"I don't feel challenged by the fights, I end up not going through many HP or other resources," is about the fights, ;the problem you see, and your own feelings, not about the GM themselves. It offers them an opportunity to make you happy. In addition, it leaves them different venues of solution - the fights can be made more challenging by upping the CR of the monsters, by adding non-combat challenges that also must be completed during the fight, or by making the environment dynamic with challenges of its own, for example.
If you have found certain resources helpful - like books or videos about GMing, you can offer them those same resources, and leave them to develop their own solutions. "I found the videos by Matt Coville gave me a lot of inspiration for improving my own GMing," admits to when you had similar problems, and how you found ways to make it better.