That behavior is expected, the manual goes over this behavior in the section Variables · The Julia Language.
In the case of the mutable struct and a = Hello(5). You are assigning the first index of the list to be bound to the variable a. At which point you are mutating the variable bound to a, and not assigning a new value to the first index of the list.