Not sure how you are planing to exactly do that... But are you sure the bottleneck is CPU time?
You still need to copy all the text from different RAM locations into one continuos destination. So there would be some restraints there.
Also have you measured in your app what takes the most time? Getting the individual strings into the TStringArray, or copying the final result into one big memory chunk (without time for allocating it).
And then in the end, potentially freeing the array, and all strings in it (all via ref count...). And even if you set strings to nil, in different threads, the mem manager probably will have some critical sections it needs to enter...
---
I have done some similar work, for building extremely large strings of thousands of tiny fragments. The time saving isn't that big, because of the work to produce the strings takes most of the time.
See TStringBuilderPart used in unit IdeDebuggerWatchResPrinter
It's a nested list, works best if you know of each part/section how many part it needs to contain. So you can alloc in advance.
Of course setting each part still needs to do string refcounting. That could be further optimized.