I think I understand what is going on under the hood based on this discussion. Can someone confirm that my comments are accurate?
x=[2] # x points to memory location m1
y=x # y points to memory location m1
x=[3] # x points to memory location m2, y still points to m1
z=x # z points to memory location m2
x[1]=4 # m2 changes value in place, affecting all variables that point there
julia> println(x,y,z)
[4][2][4]