Дерево является деревом наследования, оно действительно не показывает, как объекты используются вместе.
Местоположение, которое вы предлагаете, просто не работает с точки зрения наследования. Элементы могут иметь дочерние элементы и атрибуты, поэтому, если XAttribute был получен из XElement, это будет означать, что атрибуты могут иметь дочерние элементы и свои собственные атрибуты. То же самое относится и к XContainer, поэтому не имеет смысла размещать XAttribute рядом с XElement в дереве.
XNode - следующий шаг вверх. Может ли XAttribute поместиться под XNode? На самом деле, нет. Когда вы смотрите на XML, в общем смысле, есть 2 основных структурных элемента: узлы и атрибуты. Ни один из них не является производным от другого, поэтому имеет смысл, чтобы XAttribute и XNode находились в разных ветвях дерева XObject.
Это просто оставляет XObject, который является базовым типом объекта Xml2Linq, и все должно происходить из него, так что это лучшее (и действительно единственно подходящее местоположение) для типа XAttribute.