i see "when a request comes in, this program gets started with these environment variables, and instantly start handling stuff" to be significantly more high level andeasier to work with than the fcgi "i need to daemonise, open a socket, and wait for events http server sends me, parsing them, then doing stuff".
cgi, fcgi, embedded htp server, are all ways of handling requests, one system allowing insecure usage doesn't make it "badly designed" as luna put it