Non-programmers: This is esoteric. You can safely skip this post.
Now, as a programmer, I hate the with statement. I never use them. Back when I did they were the source of many ridiculous bugs. Saving a few characters in the source while obscuring the meaning of the code. Not a good tradeoff.
Here's when you need it: When you're implementing a macro language.
It's the same use-case as the much-maligned eval function.
eval used to have a second param, btw, that allowed the caller to provide a context that the code runs in. They took this off, but I wish they hadn't. (Scroll to the bottom of this Mozilla tech note for the historical note.)
We added these to Frontier, and were able to do wonderful stuff, like XML-RPC for example.
Imho, eval and with should only be used by people implementing macro environments.
But they are useful. And both with and eval should exist.