There actually is one very good use of eval, and no others.
If you want to allow users to run code, then you must use eval, or something equivalent to it, to run the code.
I can hear you say -- maybe you shouldn't let users run their own code.
To which I say, some software exists solely to run user's code.
For example, the very useful forever application.
And my own nodeRunner.
So, eval is useful. People who write docs should think about how they phrase their caveats. We can head off a lot of pointless arguments.