It seems like archiving functionality move the expired page but make it publish and to me, it's a Bug.
Probably the workaround is to achieve content and then expire.
if you manually move expired content then it remains expired.
It works as you describe.
When you mark the content as expired, the content will be expired.
If you select a new location archiving, the scheduled job 'Archive function' will move the page, and republish it.
I have worked on a project that diseabled the built-in 'Archive function' and created a new scheduled job that moved expired pages, preserving the expired status.
When I use the "manage expiration and archiving" function everything seems to work but with an unwanted twist.
If I only choose to expire it (not move/archive the page), it is for sure set to an expired status.
But if I choose to both expire it and move/archive it, the page is moved to the correct place in the tree BUT it is still published. Is that corret behavior or is it a bug? Should not the page be in an expired mode even if it is archived?