I would actually prefer to always give a callbacks to SDL for drawing a frame etc. instead of insisting on having full control of the main loop. These days there are so many environments that don’t like to give apps full control of their own main loop - emscripten being the worst example requiring some ugly ifdef kludge and leading to confusion like this.
In other words, instead of providing special callbacks only for emscripten, SDL would allow the user to set similar callbacks that are used in all environments. If no callbacks are set, SDL works as it used to and the user still has full control of the main loop (so control freaks can still write their own loop, but the app would be less portable).
A bit off topic, but in the same vain I think the stuff related to redefining main and the whole SDL_main library create more confusion for the minor benefit they provide. I digged up an old post I made about this:
This could be added already and maybe in the next major version the whole SDL_main library could be dropped (You probably figured out already that I really hate libSDL_main).