Processes can see transactions that have been written to the WAL file but not into the database by reading the corresponding pages out of the WAL file instead of the database. This could also be done if the WAL file is record-oriented, but it would involve reading both the database page and changes in the WAL file and merging them together. That is a lot more complex and potentially slower.