От себя добавил бы ещё маленький акцент, что в современном коде чаще выбор идёт не столько между for и forEach, сколько между for/for…of и map/filter/reduce, а forEach — это именно тогда, когда новый массив не нужен. Но в целом материал отлично объясняет, почему “универсально лучшего” варианта нет и всё упирается в контекст задачи.