BrianV está correto. É difícil dar uma regra porque varia
drasticamente com base em como você usará a tabela, como ela é
indexada, as colunas reais na tabela etc.
Quanto às práticas comuns ... para tabelas muito grandes, você
pode considerar o particionamento. Isso pode ser especialmente útil
se você achar que, para o seu log, você normalmente se importa
apenas com alterações no último mês (ou 1 dia, 1 semana, 1 ano, o
que quer que seja). Você pode então arquivar as partes mais antigas
dos dados para que fiquem disponíveis se for absolutamente
necessário, mas não estarão no caminho, já que você quase nunca
precisará delas.
Outra coisa a considerar é ter uma tabela de log de alterações
separada para cada uma das suas tabelas reais se você ainda não
estiver planejando fazer isso. Usar uma única tabela de log torna
muito difícil trabalhar com ela. Você geralmente precisa registrar
as informações em um campo de texto de formato livre que é difícil
de consultar e processar. Além disso, é difícil examinar os dados
se você tiver uma linha para cada coluna que foi alterada, pois é
necessário fazer muitas junções para examinar as alterações que
ocorrem ao mesmo tempo lado a lado.