Если тип должен быть Comparable, вы не можете создать TreeSet с несопоставимым типом и Comparator (что вы можете сделать, как сейчас).
Один из способов исправить это, сохраняя при этом типобезопасность, состоял бы в том, чтобы иметь два класса: один с сопоставимым параметром типа и один с несопоставимым параметром типа и без конструктора по умолчанию (только конструктор, который принимает Comparator) , но я предполагаю, что разработчики java не хотели вводить два класса, которые в основном делали одно и то же (хотя один из них можно легко реализовать как обертку вокруг другого).
Другим (и, возможно, более чистым способом) было бы расширение системы типов так, чтобы определенные конструкторы существовали только при использовании с определенными параметрами типа (т.е. конструктор по умолчанию существует, только если параметр типа сопоставим), но я предполагаю, что сделал общую систему слишком сложной для Java.