Ellie sparing Abby at the end made sense, because Lev was there, and because Abby had already spared Ellie twice. Not to mention that Abby didn't even want to fight in the first place. Abby knew full well that what she did to Ellie (by killing Joel in front of her) was a horrible thing to do. Abby is the sort of character that makes stupid decisions and then later comes to regret them or even hate herself for those choices. Just look at how she got together with her ex, despite knowing full well that her friend and her ex were having a kid together.
Abby couldn't kill Ellie, because she knew full well that she was Ellie's Joel (Abby was Ellie's villain, just like how Joel was Abby's villian). Abby was the person that killed Ellie's adoptive father one, just like how Joel killed Abby's father.
I can't believe the number of people that want to rate this game a 1/10 based solely on them not liking the story. Gameplay, Graphics, Sound, Controls, and Length all play a part in how good a game is. I mean, I could see reasonable people rating this a 7/10 or 6/10 because they really hated the story. But even then that's stretching it.