There is code and a test for backwards compatibility with old versions of ExposureTable, but it relies on reading a persisted table, not a coadd. Clearly there are differences.
I implemented a fix but it may need more work. I added simple coadds to tests/data, one with a v1 coadd inputs table and the other with v2 and updated testExposureRecord.py to read and check both of them. The new afw code can read old and new coadds, but there is a remaining issue: each visit in coadd.getInfo().getCoaddInputs().visits returns None for getCalib(), getApCorrMap() and getVisitInfo(). This is only expected for getVisitInfo() when reading a v1 coadd.
I also see this problem for Calib and ValidPolygon when reading Hsin-Fang Chiang's coadd /lsst8/hchiang2/coadd/7,7.fits using older afw code, and any coaddTempExp ought to at least have a Calib. So this appears to be an existing bug, though well worth fixing on this ticket, if practical.