連投失礼します。
>>370 での結論の補足です。
Unityとは関係なしにC#コンソールアプリケーションで色々試した結果,
EHogeをDoerかCTestのメンバ変数として定義すれば,
Unity開発中に発生したエラーと同様の現象が起こる
(enumにpublicを付けなくてはならなくなる)
ことが確認できました。

そもそもC#ではグローバルスコープのenumにアクセス指定子を宣言することはできないはずなので,
Unity上では独自の解釈か,または裏で何らかのクラスをこっそり被せる等の処理が行われている可能性がありますね。

長文失礼しました。m(_ _)m