In Book "Designing Data Intensive Applications", it says Concurrency and crash recovery are simpler if segment files are append-only or immutable. For crash recovery, you don't need to worry if a crash happened while a value was being overwritten, leaving you with part of old data and part of new data.
However, I didn't understand "leaving you with part of old data and part of new data". Even for Append-only database, it will have part of old data and part of new data when appending new data is interrupted.
Databases report "data is committed" after the data is written to a log. In append only databases, the log is the only place to write data to; there are no other data files to update, hence no complexity.
When an append only database is loaded, the only thing which is happening is log file is read to build some in-memory structures for optimization. It does not matter if this load is happening because of a crash or a regular box restart.
Impaler gave a good description of complexity with non append only databases. There are multiple data structures and it has to be a process to keep them in sync after a crash.