Archive will only attempt to archive associated records with dependent: :destroy (here).
Unarchive, on the other hand, does not override association_conditions_met, so it tries to unarchive the associated records. This seems like a bug to me.
With a has_and_belongs_to_many relationship, act_on_association fails on this line with PG::UndefinedColumn: ERROR: column <table name of associated record>.<foreign key to thing being unarchived> does not exist. This is because the records are associated with each other in a separate join table.