OP all of us have heard the cheaters script, it's like they get sent a copy when they start being arseholes.
Generally it's along the lines of:
I didn't do that
I didn't do that and I'm offended you asked me if I did
Ok, I did a tiny version of what you accused me of
I didn't tell you because I didn't want to hurt you and I knew you'd get the wrong idea about it
Ok, I did more than I first admitted
I couldn't tell you because you're so controlling about these things and I knew you'd flip out
I can't tell you these things because even though everyone else's girlfriends are cool you're the only one with an issue
You are fucking mental
(THEN, if you break up, this is usually followed by a short lived bombardment of contact begging you to reconsider / they'll change etc.
If one fails they try another - texts, phone calls, voicemails, emails, Facebook, Twitter, Instagram, letters etc
If this wins you back (god forbid) is ALWAYS followed up by a return to bad behaviour once they get comfortable again.
Rinse and repeat
Time to grow up and stop the cycle OP - take control of your own life, stop giving this loser so much headspace and move on.
It doesn't matter why he does the things he does, so stop obsessing over that. All that matters is working out why you didn't leave for so long and how you can begin to love yourself enough not to get sucked back into this toxic relationship or any others.
You can do it! 
