В нулевой момент времени вы запускаете десять интервалов. Каждый из них срабатывает именно "через увеличивающиеся интервалы" - первый сразу, второй через секунду
с момента установки, третий через две секунды и так далее.
Вот так должно быть понятнее:
setDelay = param => {
setTimeout(() => console.log("выполнен", param), param*1000)
}
for(var i = 0; i < 10; i++) {
setDelay(i);
console.log("установлен", i);
}
Если же вы хотите устроить именно "лесенку", код будет сложнее:
setDelay = async (param) => {
return new Promise((resolve) => {
setTimeout(() => {
console.log("выполнен", param);
resolve();
}, param * 1000);
})
}
for(var i = 0; i < 10; i++) {
console.log("установлен", i);
await setDelay(i);
}