Algumas idéias / teorias:
SELECT INTO ... permite que o RDBMS determine a ordem de classificação com base na ordem da sua tabela original. Se você inserir em uma tabela existente, pode haver uma classificação necessária para corresponder a um índice agrupado ou não clusterizado.
Sem índices - quando você SELECT INTO...sabe que o RDBMS com certeza não há índices pré-existentes para atualizar.
Sem contenção - como a tabela em que você está inserindo não existe, o SQL Server não precisa se preocupar com o bloqueio no nível de linha ou com o tratamento de contenções. Nada mais pode fazer referência à tabela criada, pois ela não existe.
Tudo isso dito, existem outras maneiras de inserir em uma tabela muito rapidamente.
Verifique se suas chaves de índice em cluster correspondem quando possível. Isso significa que não há classificação on-the-fly
Desative todos os índices não agrupados em cluster. Auto-explicativo.
Defina o modo de recuperação como simples e trace o sinalizador 610 para ON. Use a TABLOCKdica na tabela de destino e NOLOCKa tabela de origem.
Por exemplo, suponha que tablea e tableb tenham o mesmo índice de cluster:
INSERT INTO TableB WITH (TABLOCK)
SELECT <Columns>
FROM TableA WITH (NOLOCK)
Na minha experiência, isso é mais rápido do que usar SELECT INTO...e criar o índice clusterizado posteriormente. Observe que isso também pode funcionar em uma tabela que já possui dados, o que é um cenário muito mais útil.
EDITAR:
Aqui está um white paper fantasticamente detalhado da MS para desempenho de carregamento de dados no Sql Server 2008.