Hola. En realidad no hay acumulador, lo que construis es el resultado.
Pero sí, pasa como decís. El primer argumento de intercalate es el que aparece en el cuerpo del foldr como xs. Lo que hace el fold es poner esa lista xs antes de cada miembro de la lista. Siempre al principio sobra uno y g se encarga de eliminarlo (menos en el caso vacío, donde no hay que eliminar nada). Y al final se concatenan todas las listas.
Pero sí, pasa como decís. El primer argumento de intercalate es el que aparece en el cuerpo del foldr como xs. Lo que hace el fold es poner esa lista xs antes de cada miembro de la lista. Siempre al principio sobra uno y g se encarga de eliminarlo (menos en el caso vacío, donde no hay que eliminar nada). Y al final se concatenan todas las listas.