You are correct that the supplied JackCompiler and student compilers following the design in the book do not nest usage of THAT. These are not, however, the only possible sources of VM code.
An optimizing JackCompiler might be able to improve the generated code for a loop like
let i = 0;
while (i < 100) {
let foo[i] = bar(i);
let i = i+1;
}
by initializing THAT outside the loop and simply incrementing THAT in the loop.
--Mark