Cuando declaras una clase pones class, cunado declaras un enumumerado pones enum.
Son cosas distintas aunque en ciertas cosas se comportan parecido.
Cita: porque yo no puse "extends Enum" para que herede sus metodos
El código es sólo un convenio, no es una ley inmutable. El compilador se encarga de interpretar tu código, y evidentemente cuando ve extends o enum parte del bytecode será el mismo.