[When Garak saw Ziyal after she was shot, and said that he “wondered why” she loved him it broke my heart. Into a million pieces that he wouldn’t know how great he is. I absolutely ADORE Garak and if I could i would hug the sad and the non confidence right out of him. :( ]
To be honest, I think one of my favourite things about Garak is that he is completely aware that he is a terrible person who has done terrible things. Honestly if he were any other way, he’d just be another Dukat - you get the same thing with Sloan and I do think it’s the most realistic way for people like them to think and behave: it’s not that they don’t have a moral code, or even that they don’t care about it, it’s just that they don’t have the luxury of sticking to it. Dukat refuses to take responsibility for his own actions or to acknowledge having done anything unjustified - he tries to convince everyone else (and has convinced himself) that having done terrible things with a ‘but it could have been worse’ or ‘what else could i have done?’ clause makes it okay to have done them.
Garak and Sloan don’t do that. They’re fully cognizant of the fact that the things they’ve done are unforgivable - Sloan tells Bashir he sees it as a necessary sacrifice, not just of the lives he takes but of his own morals, and the ‘other’ Sloan we see in his mind who is so relieved to have died proves he’s not just bullshitting, I reckon. And Garak’s issues with guilt (in Afterimage in particular) are also really interesting in that light, because it shows that he does deal with it in a very different way to Dukat - he doesn’t deny responsibility for anything, he entirely accepts the guilt even when he does have the ‘escape’ of ‘it’s for the best’, ‘it has to be done’, ‘I’m saving more lives than I’m ruining’. He just shoves it down and keeps going because ‘it has to be done’ isn’t an excuse or a justification - it’s a reason, but it doesn’t exempt him from the consequences of anything he’s done, from anyone else or from himself.
I think The Wire is the only time he ever asks for forgiveness (and even then we’re not sure what it’s for, given events in By Inferno’s Light it might not be for any actual atrocity, just for ‘betraying’ Tain), and it’s not ‘proper’ forgiveness anyway, it’s just a gesture. And really pretty much every other time the topic even comes up, he more or less invites everyone to understand that he’s a terrible person. In The Wire everyone of his stories has him in the role of the villain - even when he’s done something good (letting the kids go) he doesn’t do it for a good reason (and regrets it!), and when he’s just the victim (when ‘Elim’ frames him) he deserved it (he tried to frame him first). In the first two he’s trying to make Bashir fuck off, so that’s one explanation, but like, these are all stories that you only have his word for, and he doesn’t seem to feel any temptation to paint himself as a martyr - the way Dukat would, for example. There’s no attempt to justify himself, because he knows the things he’s done are not justifiable.
When Ziyal (bless her heart) is once again going on about her twoo wuv for him and how great he is he tells her she’s a poor judge of character and, okay, he’s being a little flippant, but again he’s really not on board with this. In fact, most of their ‘relationship’ (debates about whether it was one and who felt what about whom and how strongly are to be left aside for this) consists of her waxing lyrical about his virtues and him trying to convince her she’s got the wrong end of the stick about him - because he knows he’s not a good person, not in a sort of angsty self-pity way, not even in an actively self-loathing way, it’s just a fact. In Empok Nor (before anything goes wrong) he tells O’Brien that he’s not comfortable with everyone seeming to trust/like him (again flippant, but with Garak that’s a given), and at the end when Garak asks O’Brien a favour and he promises to explain that it wasn’t Garak’s fault, he goes ‘oh— no, I didn’t mean that, I wanted you to express my regrets to Amaro’s widow’ (paraphrased, my memory’s not what it used to be). In Favor The Bold he sits there complaining about Starfleet Intelligence’s nefarious plans and he drops lines like ‘It’s a lot more fun asking the questions’ and my personal favourite, ‘When I was in the Obsidian Order, I did a lot worse’ (to which Bashir chuckles fondly and goes ‘I’m sure you did’, which… what? What kind of response is that? Aren’t you supposed to be Mr Moral High Ground, buddy?)
…so maybe that was too many examples. My point is that any time people start sympathising with him (or heaven forbid start liking him) he always takes great pains to remind everyone that while he is on their side, he is the bad guy in many many other people’s stories. He actively discourages any attempts to sympathise with him, and while he doesn’t mope about being a terrible person, he does totally accept it and he’s really not comfortable with people glossing over that if they do know about it - kinda funny really, since forgiveness is kind of one of the things that gets associated with him (in The Wire and By Inferno’s Light in particular, but also in his friendships with Odo and Dr Parmak), that he really doesn’t want it, at least for not any of the really bad things. I mean, if anything, he has a tendency to cast himself as an even worse person than he actually is. Dukat comes at it from the opposite direction, which is what makes it such an interesting pair of characters to have as the ‘main’ Cardassians on the show.
tl;dr: it’s not so much a ‘self-esteem’ thing as a ‘being fully aware that he’s a terrible person and not understanding why so many people are willing to overlook that’ thing. Which, er, potentially just as tragic, but tbh it’s integral to why he’s such an engaging character (and, kind of ironically, it makes him a lot more sympathetic than if he were to actually think of himself as sympathetic :P)