Random write vs sequential/append-only definitely has a huge performance impact.
But if you think about writing to data files, how would you handle failures?
You could write to the data file & before the operation is acknowledged and the process crashes. In such a case, the client might retry the operation which will lead to duplicates.
Also, the ability to restore to a point in time, by using the WAL. We just need to apply operations till a particular offset.