Для меня смысл силедов не только в том, чтобы в when проверять, а ещё и в том, чтобы весь код был построен на ограничениях по типам. И без отдельных типов для силеда и потомков, примерно всё моё приложение бы полетело в пизду.
Падожи, это же никто не отменял. Даже в kotlin ты можешь exhaustive все кейсы enum проверить.