O operador +=só se aplica a tipos de dados numéricos no SQL Server. Documentação da Microsoft aqui
Para concatenação de strings, você precisa escrever a atribuição e a concatenação separadamente.
DECLARE @sql nvarchar(max);
SELECT @sql = N'';
SELECT @sql = @sql + [definition] + N'
GO
'
FROM sys.sql_modules
WHERE OBJECT_NAME(object_id) LIKE 'dt%'
ORDER BY OBJECT_NAME(object_id);
PRINT @sql;
Além disso, se você estiver executando essa consulta no Management Studio, lembre-se de que há um limite para o tamanho dos dados que ela retornará (inclusive em uma instrução de impressão). Portanto, se as definições de seus módulos excederem esse limite, elas serão truncadas na saída.