Unfortunately, there is no such a way to combine multiple concurrent_vector into a single one without reallocation. It comes from the strict data structure rule of tbb::concurrent_vector where the size of each segment of elements must be of the same size as sum of all the previous segments.
But remember that concurrent_vector grows without reallocation, so the best you can do is to append vectors one by one destroying them immediately after copying. This way, there are more chances that large enough memory block will be freed when needed.
std::copy(B.begin(), B.end(), A.grow_by(B.size())); B.clear();
std::copy(C.begin(), C.end(), A.grow_by(C.size())); C.clear();
...
std::copy(X.begin(), X.end(), A.grow_by(X.size())); // X.clear();
Though, memory fragmentation can ruin everything once again.