To me, the only major challenge in achieving a full RetroPie integration is the naming convention. RetroPie filesystems and configs use a "shortname" system naming convention ("Super Nintendo Entertainment System" = "snes", and so on). RetroFE (seems) to prefer a long name for the metadata input files, plus most of the preexisting collection assets and configs. Personally, I prefer the long names, as I standardized on HyperSpin/RocketLauncher names a long time ago, and I prefer to keep that consistent across various build.
My approach to solving this (for now) is a mapping file that translates long names to short names. Similar to EmulationStation on RetroPie, I have created a wrapper script in /usr/bin for launching RetroFE. The wrapper reads the mapping file at launch time, and updates the collection settings.conf files to change the long names to short names. From there, everything pretty much works. I also have a single launcher for run command.sh. All of this gets set up by the RetroPie module at the time of build/install/update.
All of this can easily be configured manually, but I've been trying to come up with a solution that keep existing RetroPie and RetroFE documentation valid...and isn't too much of a hack. Maybe some will think that's what this is, but hey...it's a starting point. If folks have better ideas, I'm interested - at least I now I have a better understanding of how the RetroPie internals work so we can try and keep native integration.