The optimize() call in Archive didn't have the right table buffer after someone updated the call to field->offset(). Tricky little thing... heisenbug (and no this is not in any release of 5.1 as far as I can tell, recent change).
Ok, technically this is a shroedinbug.