We ran into the same issue in this thread ( http://ellislab.com/forums/viewthread/150381/ ) when we wanted to add some elements to the safe HTML list.
The fix for this can be applied around line 615 in the EE_Typography.php file (we have a few hacks in place). Rather than replacing the opening and closing tags at once, split them into two regular expressions so that nested elements of the same type don’t get skipped over. We ran into this issue with nested unordered list elements.
// $str = preg_replace("#<".$val.">(.+?)</".$val.">#si", "[$val]\\1[/$val]", $str);
$str = preg_replace("#<".$val.">#si", "[$val]", $str);
$str = preg_replace("#</".$val.">#si", "[/$val]", $str);