You can use stack(a; dims=1) and then reshape for this, or a comprehension:
julia> c = stack(a; dims=1); summary(c) # outer axes combined to 1st, like vec(a)
"6×5 Matrix{Char}"
julia> d = reshape(c, size(a)..., :); summary(d)
"2×3×5 Array{Char, 3}"
julia> d[1,1,:] == a[1,1]
true
julia> e = [a[i,j][k] for i in axes(a,1), j in axes(a,2), k in axes(a[1],1)];
julia> e == d
true
This operation would be stack(a; dims=(1,2)) if that existed. But right now, keeping multiple outer axes only works when they are last, as in stack(a).