Дело не столько в преимуществах, сколько в том, что подходит для конкретной ситуации, как вы сказали. Вы можете представлять практически все с помощью узла, и в 99% случаев (как я обнаружил, по крайней мере) вам не нужно реализовывать пользовательские типы объектов.
Я всегда считаю taxonomy_term
тип сущности хорошим примером того, почему не все должно быть типом узла / типа контента:
Термин таксономия по существу предназначен для группировки разных сущностей и поэтому не требует той же функциональности, что и узел. Хотя теоретически вы могли бы использовать тип контента для выполнения этой функции (возможно, с полем ссылки на узел), термину таксономии не нужно делать то же самое, что и узлу, поэтому в действительности это не имеет смысла. То же самое можно сказать о user
и taxonomy_vocabulary
сущностях типов.
Таким образом, термин таксономии создается как отдельная сущность и запрограммирован делать только то, что ему нужно, при этом получая преимущества возможности присоединения полей и т. Д.
Я думаю, что простой ответ заключается в том, что когда узел / тип контента не выполняет то, что вам нужно, или это просто огромное количество избыточных ресурсов / издержек для очень небольшой выгоды, тогда вы должны написать собственный объект.
Это только на основе моего личного опыта; Мне было бы интересно услышать, что кто-то, непосредственно связанный с разработкой ядра Drupal, должен сказать об этом.