Este é um bug no SQL Server 2008.Use
insert @columns
select ColumnNames.value('.', 'nvarchar(300)') name
from @xColumns.nodes('/columns/name') T1(ColumnNames)
OPTION (OPTIMIZE FOR ( @xColumns = NULL ))
Esta solução alternativa é de um item no Site do Microsoft Connect que também menciona um hotfix para este problema do Eager Spool / XML Reader está disponível (em traceflag 4130).
O motivo da regressão de desempenho é explicado em um item de conexão diferente