What I've done in the past to circumvent the report variable limitation is to place the report variable in a footer of a data grouping and set the variable to reset as the group changes. It doesn't work for every layout, but for some reports you can make it appear as a seamless text string.
Make a variable "X" as a counter that resets itself after, say, 10. [x=iif(x<10,x+1,1)]
Then make another varaible, "Y", that changes as X=1. [y=y+iif(x=1,1,0)]
Make your data-grouping on Y.
I've also used this trick to make columns of detail data under non-column groupings.
Or, if you know you only need, say 400 characters, you can make two variable -- one to concatenate when a counter is less than a cartain amount and one that starts concatenating >= the counter. [string1+iif(x<10,text,'')]
Hope this helps.