Причина, по которой перечисления легко работают с ==, заключается в том, что каждый определенный экземпляр также является одиночным. Поэтому сравнение тождеств с использованием == всегда будет работать.
Но использование ==, потому что оно работает с перечислениями, означает, что весь ваш код тесно связан с использованием этого перечисления.
Например: Enums может реализовать интерфейс. Предположим, вы используете enum, который реализует интерфейс Interface1. Если позже кто-то изменит его или представит новый класс Impl1 как реализацию того же интерфейса. Затем, если вы начнете использовать экземпляры Impl1, у вас будет много кода для изменения и тестирования из-за предыдущего использования ==.
Следовательно, лучше всего следовать тому, что считается хорошей практикой, если нет какой-либо оправданной выгоды.