The strange thing is why head-butt him? Why not punch him in the face?
It's soccer - you can't use your hands.
If you followed the earlier games, Figo, the Portugal captain, also head-butted an opponent, and didn't get caught.
Here's a rationale:
A fist and a punch are almost always seen by the refs, and result in instant ejection.
Option two is to wait until the next hard play, and then take out the opponent's knee -- but this is more of an 'escalation' among the players' because this puts players' careers at risk -- so 'clean' players don't go there. (Although Matarazzi would do that to an opponent in a nanosecond, as he's a well known cheap-shot artist).
The third option is the discrete head butt. It sends a message, and it happens quickly -- the recipient knows the message being sent. It won't cripple anyone.
The only problem was that Zidane was SO angry that, once he started the head-butt, he threw all his weight into it. Matarazzi went with the flow, to dramatize. And -- it wasn't private anymore.