That way of group concatenating is actually unsupported and its behaviour can be undeterministic. Anyway, you need to use:
DECLARE @Names VARCHAR(Max) = ''
SELECT @Names = @Names + COALESCE([A].[Name] + ' ','')
FROM
(select [I].[name_Text] as [Name] from [dbo].[payments$] [G]
inner join
[dbo].[payment$] [H]
on
[H].payments_Id = [G].payments_Id
inner join
[dbo].[Payment] [I]
on
[I].[payment_Id] = [H].payment_Id
WHERE
[G].restaurant_Id = 0 and [I].[lang] = 'en') A
SELECT @Names as [name]