Whatever gives users the best guidance. I searched for code that uses Runner(loop_factory=...) and there is one case apart from test_runners.py: in test_asyncio/test_subprocess.py it is used as loop_factory=asyncio.new_event_loop specifically to prevent the watcher to be set (since the test sets its own watcher).
I would emphasize that the default case does call set_event_loop() and implies attaching the watcher (if there is one!) to the loop; it's fine to suggest that loop_factory should be used only if this is undesired.
Originally posted by @gvanrossum in #95979 (comment)