Почему после присваивания значения переменной другой переменной, меняется массив первой переменной?
Потому что обе переменные (aaa и bbb) ссылаются на один и тот-же объект.
Можно сделать так:let aaa = [1,2,3]
let bbb = [...aaa ] // не обязательно через spread, можно чем угодно, что делает копию. slice, например.
bbb.push(4)

console.log(aaa) // [1,2,3]
console.log(bbb) // [1,2,3,4]https://jsfiddle.net/s716xeq9/
Присваивается не сам массив , а ссылка на него т.е aaa и bbb используют ссылку на 1 массив , чтобы этого избежать можно использовать полное копирование метод slice:
let bbb = aaa.slice();