I'm not sure how confusing it is. I'm hesitant to forbid it outright because right now nMigen doesn't really have abstraction mechanisms besides submodules (i.e. there is no other construct similar to a "function"). If you had an actual bug caused by this I would be more inclined to make it an error, but so far I'm not aware of anyone hitting it.
I think it might be misleading to people who aren't familiar with HDL, thinking that they can add/remove elaboratables dynamically. By the way the generated RTLIL code looks correct (it will instantiate MyElab no matter the value of the condition).
A lot of the things would be misleading to people who aren't familiar with HDL, and if we removed all of them, we wouldn't have any HDL at all. There needs to be a stronger argument, like someone actually hitting the problem.