Even though C-style arrays are certainly not just "glorified pointers", naked C-style arrays are not assignable, regardless of how you slice it. C++11 does not change anything in that regard.
Your
*(vertex[0]) = *new GLfloat[3] {0.0f, 0.0f, 0.0f};
does not do what you think it does. On the left-hand side vertex[0] decays to the pointer to vertex[0][0], which you dereference with the *. So, the left-hand size is simply vertex[0][0].
Meanwhile, new GLfloat[3] {0.0f, 0.0f, 0.0f} returns a pointer to the [0] element of the newly allocated nameless array. The * dereferences that pointer, giving you access to that [0] element.
The above means that your assignment is really equivalent to
vertex[0][0] = nameless_dynamic_array[0];
i.e. it does
vertex[0][0] = 0.0f;
with the new-ed array becoming a memory leak.
In order to assign an array as a whole, you have to wrap it into a class (std::array being a standard wrapper). Or, if you for some reason have to use naked C-style arrays, use std::copy or even memcpy for copying data from one array to the other.
std::array.