Вы не понимаете, как работает setTimeout. Эта функция не останавливает выполнение кода, а создаёт в отдельном потоке таймер, который через заданное время положит вызов callback-функции в очередь выполнения JS. В результате вы практически одновременно создаёте все таймеры, и они одновременно срабатывают.
Для циклических вещей используется либо рекурсивный вызов setTimeout, либо, что гораздо лучше, setInterval.
onStart() {
let idx = 0;
const timer = setInterval(
() => {
this.step = this.myList[idx];
idx += 1;
if (idx >= this.myList.length) {
clearInterval(timer);
}
},
1000,
);
}