The behavior is useful because copying data can be expensive. Saying b = a avoids a copy. Moreover, it’s sometimes useful to keep the same array in different forms without copying the underlying data. Again, the behavior of b = a let’s you achieve that.
See the following quote from 7 Julia Gotchas and How to Handle Them - Stochastic Lifestyle
"(Such behavior) is very useful because it also allows you to keep the same array in many different forms. For example, we can have both a matrix and the vector form of the matrix using:
a = rand(2,2) # Makes a random 2x2 matrix
b = vec(a) # Makes a view to the 2x2 matrix which is a 1-dimensional array
Now “b” is a vector, but changing “b” still changes “a”, where “b” is indexed by reading down the columns. Notice that this whole time, no arrays have been copied, and therefore these operations have been excessively cheap (meaning, there’s no reason to avoid them in performance sensitive code)."