Enum не реализует оператор равенства ==, но переопределяет метод Equals.
Поскольку он не реализует ==, система выполняет проверку на равенство ссылок. Обратите внимание, что System.Enum - это класс, а не структура. Следовательно, значения, такие как Directions.Left, упакованы. В данном конкретном случае объекты в штучной упаковке оказываются отдельными объектами, поэтому они не проходят тест на равенство ссылок.
Компилятор понимает == для конкретных типов Enum (например, Directions), но компилятор не выполняет эту специальную обработку для типа System.Enum.