Because With clutters your code, you get too much indentations and it removes readability. Now I saw code with 4 to 5 times nested With statements. Pure Horror. So my first job was to remove all these statements. But what if you get ambiguous Methods/Properties?
The documentation is clear on that:
However, because members of outer statements are masked inside the inner statements, you must provide a fully qualified object reference in an inner With block to any member of an object in an outer With block.
This means that in an inner with block you cannot access the members of the outer with block with the . qualified name. You need the full qualified name.
So when you need to de-with your code you start from the outside, taking the most outer block first, solving the references, building, removing the next one, and so on…
But you shouldn’t use With statements in the first place.
Just name your variable if you don’t want to enter the fully qualified name for every statement.