Since eContents and eAllContents actually exist in EMF, I would put them into the BuilderRuntime module right next to eContainer and eContainingFeature. Just as in EMF, the methods would be available on each object and return the children (values of containment features) or all children (same recursively) respectively. 

Traversing an element and all children can be done by

  ([element] + element.eAllContents).each do ...

Having more methods available on each object like "traverse" increases the risk that method names collide with actual feature names (which you can work around by using getTraverse). Of course with an optional mixin you can always decide if you include it...

I'd really like to keep RGen functionality and API as small and simple as possible.
I agree that it might be better to have a more concise way to express "iterate over the element and all children" but on the other hand, different people have different taste regarding what APIs should look like.

It's actually very easy to add things like the traverse method per-project:

module BuilderRuntime
   def traverse(&block)
      ([self] + eAllContents).each(&block)
   end
end