I am not 100% sure why it is designed that way. I think it is because of the way Java manages variables and memory.
While assigning a primitive you will be able to 'clone' it, with objects like lists or arrays or types, you have to 'clone' them manually.
To be honest, once you get the hang of it, it turns out quite handy, and you can reference an object in many ways while it is in only one place in memory.