Verifiquei que no projeto DelphiMultithreadingBook0202 (página 52) existe um pequeno bug.
Na unit DelphiMultithreadingBook0202.QueueOrSynchronizeThread.pas, procedure Execute, no bloco "if not Terminated" a procedure nunca é executada quando o FInterfaceUpdateType é igual a "Queue".
Só consegui resolver colocando o primeiro parâmetro da procedure como "nil".
Quando o FInterfaceUpdateType é igual a "Synchronize" o problema não ocorre.