This cannot be done with [] indexing. Each [] operation is an independent operation (calling getindex). You have tried "slicing" the nested arrays by calling arr[:][1]. There are two independent operations here: first, (arr[:]), and then (arr[:])[1]. But in this case arr[:] == arr! Similarly for arr[1][:] — you're simply getting all the elements of the first vector. That's why the two are returning the same thing.
Your comprehension is a good solution. Unlike old* versions of MATLAB, Julia's JIT makes for loops faster than the vectorized alternatives. It takes some getting used to if you're coming from Matlab or Python. But it allows you to traverse these kinds of complicated structures in a very efficient manner.
With regards to your comment, the reason they used a vector of vectors in this case instead of a adding columns to a multidimensional array is that currently only vectors can grow. You can copy your Vector of Vectors into a two dimensional array by calling hcat(arr...), but if your vectors are very large (millions of elements) the copy itself will be fairly slow.
*(Recent versions of Matlab have a JIT, as well, which can make some for loops faster than vectorization, too, but when it kicks in is unpredictable. For loops these days are almost always faster than arrayfun/cellfun with custom functions, in my experience).
Vector. e.g.type Body{T}\n\tvelocity::Vector{T}\n\tend. Then an instance ofBodyhas items appended to thevelocityfield while a differential equation is being solved. I'm still digesting this, so no ideas on how to implement the same with multidimensional arrays...