Согласен. Я бы, например, все бы отнаследовал от undefined. Получился бы довольно философский язык. Всё - есть ничто. А что-то это ничто и с боку бантик.
Я бы подумал над таким ЯП, чтоб в любую функцию можно было передать любой объект Object, но с прикруткой на уровне компилятора instanceOf конкретики на входе и вариантами обработки, если предан не тот класс/интерфейс: ошибка, молчаливый или с записью в лог выход из функции. Передавай что хочешь, но если случайно нарушится LSP, то ты хотя бы на это сразу среагировал, без непредсказуемых последствий.