É importante separar as idéias aqui: Logs e Auditoria.
Logs usamos pra observar a aplicação possiveis problemas. Esses podem ser descartados rápido.
Já no caso da magalu, foi usado um registro de auditoria, que é usado pra guardar mudanças nos dados sensíveis e devem ser guardados por muito tempo para um possível rastreio dos dados.
Da sim pra guardar no mesmo banco de dados em tabelas de histórico se o que você quer auditar tem pouca mudança. Alguns frameworks tem até libs pra isso, como papertrail com rails ou traits do laravel.
Agora se precisa de dados massivos, voce pode sim guardar num S3, fica mais barato, porém, mais dificil de consultar quando precisar. Ou ainda usar um banco de dados secundario pra isso e uma ferramenta de CDC (change data capture) pra capturar os dados independente da aplicação.
Nao tem uma resposta só, nem bala de prata. Tem que entender o contexto e sensibilidade dos dados.