"It works by simply replacing the action URL from the login form on the web page to a local HTTP server which redirects the request to the original destination. The local HTTP server saves the request, so the app can reproduce the same call next time you connect to the same WiFi network."
How would root or iOS help you? The problem is that each captive portal is different, so you need the user to "teach" it once. Seems a reasonable approach to me.
Root would allow packet capture without the VPN framework that may not work before there's a network "up" (I should try tShark).
I guess I'm just a bit exasperated about how the lesser-used parts of Android have far less attention to detail (there's no reason this couldn't be a built in feature)