A couple of thoughts..
Partitioning and BCP seem to work nicely. For the case where partitioning is not setup I like BCP, batching up the process helps too. BCP is nice too since most of the time the active server and the archive server are not the same.
Instead of creating and dropping table, I like truncate table.
A few thoughts that might help.