The separate class is a readability thing: the serialization functions don't overlap with the business and I/O code in Journaler, so I'm coming at it less from "why should they be a separate class" and more from "why should they be in the same class?".  Much of the existing code combines encoding and I/O in the same class, which I prefer to avoid.  With the separate class it's obvious from the calling side (e.g. in JournalScanner) that we're using the encoding stuff but not the I/O stuff from Journaler.

Format as an arg to fns vs format as a class attribute, I'm less committed one way or the other.  I like having it as an attribute of the class so that calling code is more succinct.