Ну я говорю, контракт на произвольный конструктор - вещь полезная. Но контракт на компаньон - более универсальная, потому что компаньон удобно делать фабрикой
А контракт на некий приаттаченый, возможно снаружи, к классу объект -- совсем сказка, тогда можно не ограничиваться компаньонами и перестать таскать кастомные сериализаторы в подавляющем большинстве случаев, к примеру :) И не вешать на один компаньон несколько ответственностей, если он уже есть и не фабрика при этом.