The abstraction is provide better UX. Anyone will have to write stuff over telnet to provide chained requests, variables, assertions, etc. Once you do that, you basically get a reimplementation of hurl.
Hurl is not enough for some of the tests I want to write, i.e. testing sending a 50MB file, or dynamic content.
If you're going to do a single request or a few requests in isolation, curl is the way to do.
If you wanna do a full fledged testing suite, might as well using a proper scripting language or a test framework.
Hurl hits the spot between those two for me.