Нельзя сказать, что одно или другое лучше, это зависит. Неявные DataTemplates - хороший способ глобально (даже если только для части визуального дерева), как должен выглядеть Type. При использовании ItemTemplate вы можете указать, как он должен выглядеть в данном ItemsControl (т.е. ListBox, ComboBox и т. Д.).
Вы даже можете использовать комбинацию из них обоих, что позволяет вам выглядеть «по умолчанию», но настраивать его для каждого элемента управления или типа элемента управления.
Даже с ItemTemplate вы можете установить его глобально, скажем, для всех ListBox, или только для одного экземпляра ListBox. Опять же, иногда один метод лучше, иногда нет. Это зависит от того, что вы пытаетесь сделать.