Я могу ошибаться, но мне ситуация видится так:
Фигуры id=1, id=2, id=3 у вас, по идее, должны являться "одним целым", так как объединены общим родителем, для которого и заданы mouseenter/mouseleave, и в случае с id=1 и id=2 мы подобное поведение и видим, по логике вещей у фигуры id=3 должно быть соответствующее поведение, т.е. при наведении на нее mouseenter не должен срабатывать (он уже сработал, когда вы навели мышь на фигуру id=1) просто не должен срабатывать и mouseleave.
Возможно, это связано с геометрией, и поможет в <use>
установить необходимые координаты вместо x=0 y=0, поставить x=0 y=20, а в <defs>
для фигуры не устанавливать координат.
А может, mouseleave срабатывает потому, что фигура берется извне, и он будет срабатывать в любом случае (хотя, по логике, не должен).