When I first heard the claims of it being "bad" A LOT of the "complaints" people make about it to me come across as being "I'm too stupid to use this, so nobody should." -- NEVER been a big fan of that approach. First time I heard complaints about it, that's basically what I 'thought' was being said.
But over time I've seen it abused to the point that code clarity gets utterly pitched out the window. It generally was never a problem in languages like C and Pascal... but with JavaScript I think the lack of an emphasis on the fundamentals of good practices mated to a lot of just plain blind copypasta has led to people using it before they know enough about the language to even be looking at it.
Admittedly, that describes a LOT of what people do with JavaScript. They dive for shortcuts, frameworks, and off the shelf code they don't understand before they even know enough to have an opinion as to the quality -- much less sanity -- of what they're using.
In that way, it goes back to "some people are too stupid to be allowed to have this toy" -- kind of like toy filled candies here in the colonies; what are they called? Kinder eggs? Were that such precautions were taken with ... well, let's not get political.
Of course all that said it ceases to be something that even EXISTS if you "use strict". Becomes invalid code as it just isn't allowed! In that way, using "with" in JavaScript is much akin to using <font> and <center> tags in HTML. A lot of people will see it and go "pull your cranium out of 1997's rectum!"
I shudder to think how badly people using JavaScript would get lost in Pascal or Ada... where properties and methods of an object are treated in the same scope as your locals -- equivalent to if in JS you wrote every object method as
test : function() {
use (this) {
// ALL method code here
}
}
You deal in languages like that, "with' is second nature and you just don't see it as a problem as it's just how things are done. Modern scripting languages people have this raging chodo for using the same variable names over and over again -- and that's the REAL problem. If you use verbose unique names EVERYWHERE you don't have these issues.