¿Iterador y un generador en Javascript?

En la página de Mozillaiteradores y generadores hay una declaración:

Si bien los iteradores personalizados son una herramienta útil, su creación requiere una programación cuidadosa debido a la necesidad de mantener explícitamente su estado interno. Los generadores proporcionan una alternativa poderosa: le permiten definir un algoritmo iterativo escribiendo una sola función que pueda mantener su propio estado.

Con respecto a la explicación anterior, ¿no es posible escribir un algoritmo iterativo sin Generadores, como:

Array[Symbol.iterator] = function(){
    return {
        next: function(){
            //logic
            return {
                value: "",
                done:false
            }
        }
    }
}

No puedo entenderlo. ¿Podría alguien explicar cuál es la razón principal por la que crearon una alternativa? No me parece muy diferente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta