Anselmo,
Depende.
Acho que a resposta ideal depende muito do teu cenário (quantidade conexões simultâneas, quantidade de registros envolvidos, índices existentes nas tabelas de origem e destino, etc.).
Você quer melhor o desempenho deste único processo ou evitar perda de desempenho no teu sistema como um todo?
Por exemplo, se você bolar um Job que a partir de uma query salve os dados em um arquivo .txt na rede, e depois outro Step que faça um BULK INSERT na tabela de destino, teu processo em sí talvez fique um pouco mais lento, mas acredito que consiga diminir o tempo de lock na tabela de destino. Diminuindo este tempo de lock, teu sistema em geral (e não apenas o processo de cópia) terá um desempenho melhor. Mas também pode ser que os locks não afetem você e que este processo seja rodado de madrugada quando não tiver ninguém acessando!
Minha resposta é "depende". Na dúvida, não tenha preguiça,
, faça testes com as duas opções em seu ambiente de desenvolvimento, para ver na prática qual se adequa melhor ao seu ambiente.
Um abraço,
Raul Santos