This isn’t about the server, but rather that live_call is what runs the live-reloaded version of the event/function once we have one - you can’t just do obj_some.create = new_function or scr_some = new_function in GML.
JS live reload is different because typically (like with nodemon or live.js) it simply restarts the app / reloads the page on JS changes. On GM terms this is an equivalent of compiling-running the game again and saving-restoring the window position or using window_embed_into to insert the game window into a container window.