To answer my own question, there are launch files provided in the standard moveit packages that do allow this, but I feel this is not well documented. To launch moveit without rviz there are at least 3 steps required: 1) publish a static transform between world and base_link 2) launch planning_context.launch with load_robot_description:=true 3) and finally, launch ROBOT_moveit_planning_execution.launch sim:=true (for a simulated robot at least)
I actually hope I'm missing something and I will be corrected here, because it feels strange to me that the demo mode is documented everywhere and it is only one command ( launching the demo.launch), but the non-demo ("real"?) takes more steps and they are not documented almost nowhere. The closest I found for doc about this is the universal_robot github README.md. So, for me, this comes down to the following:
rosrun tf static_transform_publisher 0 0 0 0 0 0 1 world base_link 100