The problem is that the archive table includes a "current_record" field that references the original table, and because ondelete defaults to "CASCADE", when the original record is deleted, so are all the records that point to it.
It appears the current system is designed to store previous versions of records that still exist, not to archive records that no longer exist. If we want to enable archiving of deleted records, we would have to think about how it should work. In that case, all previous versions would have invalid references, so there would be no way to know they are related to each other. Probably the thing to do would be to archive the final version of the record and then change all previous versions to reference the archived final version. Maybe open a Google Code issue to request this feature.
Anthony