Thanks for the post, Drake. Unfortunately, I have to disagree. First off, your testing enviornment is quite inefficient. Try checking this:
Its pretty much the same idea, but performs multiple tests in each "set" instead of just one, along with DoEvents between sets are vital since it helps prevent other threads from being executed during the loops. Finally, you're running in a normal priority environment, which means a lot of processing is still going on in the background. May not be much in relative to what it can be, but it does fluctuate the results. Finally, you should be testing on the same variable when possible - often this won't be any problem at all, but its just good practice since with larger variables, it could change things.
Now for what with blocks do exactly, I am not positive (I used to know better before), but I believe it is along the lines of they assign a pointer in memory to where the "With"ed object is. This means that for an example like yours, it is more then likely going to be slower, and that is very true and also not an uncommon time for With Blocks to be used. With blocks, when in situations of heavily structured objects with multiple references, will come in handy. They also are good when you have to perform calculations to get to that object. Often its easy to stay away from such huge blocks, but it does happen.
Finally, as for my results of your test, I got that T1 is slower, too, but by a very insignificant amount (around 1% slower).