In my experience the usefulness of audit tables diminishes as the table becomes more complex (more columns; composite and document columns, like arrays, json, xml), because it becomes difficult to find what exactly changed. Another problem is related rows; audit tables aren't very good to capture the context of changes. You can work around this with more complex triggers, but it quickly becomes a lot easier to do this from the application and not in the database, capturing semantics and not just data changes.
The issue with any application-based approach is of course that it can't provide total access mediation.
...which is itself a special case of an audit trail or log: https://en.wikipedia.org/wiki/Audit_trail