The pair clashed just before half-time with the game goalless and MacKenzie was shown a straight red card.
He was given his marching orders for a similar incident with Huddersfield's Alan Lee in September.
"I'd like to apologise to my team-mates and my manager and the fans," the 26-year-old told BBC Three Counties Radio.
Media playback is not supported on this device
"On the incident, firstly I was just doing my job. I made a good clearance and then I was kicked on the ground and when I confronted the player he headbutted me.
"And I retaliated which obviously was wrong.
"I've apologised and I'll apologise again. It was wrong. I should have alerted the referee if he didn't see it - or the linesman who conveniently didn't see it either.
"I find it hard how half a stadium can see it but a referee and linesman can't.
"I need to learn from this. It's not the first time it's happened. Maybe I am a target for players who think they can wind me up. But I need to get that out of my game or it could hamper my career."
Dons boss Karl Robinson said MacKenzie's actions were unacceptable and added the Scot would be punished internally.
Media playback is not supported on this device
But the MK manager praised the defender, who will be suspended for four games, for facing the media immediately after the game.
"I bet you were all shocked to see the player want to come to speak to you," he said.
"If we make mistakes we stand up as men, hold our hands up and internally we'll deal with everything else.
"The player can't headbutt our player, I'm disappointed they missed that.
"But I can't accept what happened afterwards. I'm so proud of him in a weird way, coming out and accepting his punishment. I'm not proud of what he did but he'll learn from it."
MK Dons defender Gary MacKenzie has apologised for headbutting Charlton striker Yann Kermorgant in Tuesday's 2-1 loss at the Valley.