I do not understand the difference between :
# applying hcat to a vector
hcat( [hcat(Gray.(Float64.(rand(10)))) for _ in 1:10] )
# applying hcat to a list of arguments, using the splat operator
vecs = [hcat(Gray.(Float64.(rand(10)))) for _ in 1:10]
Hcat takes its arguments and concatenates them horizontally. When you pass multiple vectors to hcat it will create a matrix with each vector as its columns. It does exactly this when you only pass a single vector, creating a Nx1 Matrix.
When you use the splat operator it separates the vector into its components and concatenates them creating I.e a row vector.
Since your vector is made of 10x1 matrices it creates a 10x10 matrix.