**How to reproduce**
Clickhouse version 20.11.5.18, 20.8.7.15, 20.3.19
```
SELECT
    groupUniqArray(val) AS uniq,
    toTypeName(uniq),
    groupArray(val) AS arr,
    toTypeName(arr)
FROM
(
    SELECT CAST(number % 2, 'Enum(\'hello\' = 1, \'world\' = 0)') AS val
    FROM numbers(2)
)

Query id: d4657f27-c8bd-4174-9947-c6c48d0222d5

┌─uniq──┬─toTypeName(groupUniqArray(val))─┬─arr───────────────┬─toTypeName(groupArray(val))────────────┐
│ [0,1] │ Array(Int8)                     │ ['world','hello'] │ Array(Enum8('world' = 0, 'hello' = 1)) │
└───────┴─────────────────────────────────┴───────────────────┴────────────────────────────────────────┘
```

{
        const auto & value = this->data(place).value;
        size_t size = value.size();
        ColumnArray & arr_to = assert_cast<ColumnArray &>(to);
        ColumnArray::Offsets & offsets_to = arr_to.getOffsets();
        offsets_to.push_back(offsets_to.back() + size);
        if (size)
        {
            typename ColumnVector<T>::Container & data_to = assert_cast<ColumnVector<T> &>(arr_to.getData()).getData();
            if constexpr (is_big_int_v<T>)
                
                for (auto it = this->data(place).value.begin(); it != this->data(place).value.end(); it++)
                    data_to.push_back(*it);
            else
                data_to.insert(this->data(place).value.begin(), this->data(place).value.end());
        }
    }
    bool allocatesMemoryInArena() const override { return true; }
};
template <typename Node>
struct GroupArrayNodeBase
{
    UInt64 size; 
    
    char * data() { return reinterpret_cast<char *>(this) + sizeof(Node); }