Oi Thiago,
Só acrescentando ao que foi muito bem explicado pelo Frederico, você não precisa necessáriamente usar TABLEUPDATE() quando está usando bufferização. Note que a questão do uso do TABLEUPDATE() não está no fato da bufferização ser otimista ou pessimista. Isto tem mais a ver com a forma como os bloqueios serão feitos e como você terá que tratar as questões de contenção e controle de conflitos.
O importante sobre o uso de TABLEUPDATE() é verificar se ele está sendo usado com bufferização de linha ou de tabela. Com bufferização de tabela (seja pessimista ou otimista), você terá sempre que usar TABLEUPDATE(). Já com bufferização de linha (continua não importando se otimista ou pessimista), o VFP faz um TABLEUPDATE implícito toda vez que o ponteiro de registro é movimentado. Sendo assim, um simples SKIP em uma tabela com bufferização de linha causará um TABLEUPDATE(), mesmo que você não o tenha feito explicitamente.
Espero que ajude...
Um abraço!