Почему интервал в setTimeout не изменяется?
В нулевой момент времени вы запускаете десять интервалов. Каждый из них срабатывает именно "через увеличивающиеся интервалы" - первый сразу, второй через секунду с момента установки, третий через две секунды и так далее.
Вот так должно быть понятнее: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);
}
setTimeout не останавливает выполнение потока, соответственно в один момент времени вы устаналиваете сразу 10 таймаутов от 1 до 10 секунд.
Чтобы сделать так, как вы хотите, но без Promise'ов, рекомендую рекурсивные вызовы setTimeoutlet tick = (delay, end) => {
  if (delay >= end) {
    return
  }
  setTimeout(() => {
    alert('hola')
    tick(delay + 1, end)
  }, delay * 1000)
}
tick(1, 10) // Выведет 'hola' 10 раз с разными увеличивающимися интервалами