Questo è un bug in SQL Server 2008.Usa
insert @columns
select ColumnNames.value('.', 'nvarchar(300)') name
from @xColumns.nodes('/columns/name') T1(ColumnNames)
OPTION (OPTIMIZE FOR ( @xColumns = NULL ))
Questa soluzione alternativa proviene da un elemento in Sito Microsoft Connect che menziona anche un hotfix per questo problema di Eager Spool/XML Reader è disponibile (sotto traceflag 4130).
Il motivo della regressione delle prestazioni è spiegato in un elemento di connessione diverso