WPF использует нечто похожее на всплывающее событие при разрешении имени.
Поскольку он находит элемент с именем MyListBoxName
в своем непосредственном родительском шаблоне, он будет использовать его.
Если нет, он попытается найти его в родительском шаблоне родительского шаблона и так далее.
Вот почему в вашем случае он компилируется и работает отлично, но не работает, если вы пытаетесь добавить дублированное имя в тот же шаблон