Many large distributions do not compile libcurl with c-ares, making DNS lookup unavoidably blocking. However there are other tools available for nonblocking DNS resolution, such as libevent's evdns module. I don't know why OSes don't build libcurl with c-ares, but it would be moot if libcurl had hooks for delegating DNS resolution to another tool.
Alternately maybe libcurl could require c-ares rather than leaving it as an option, but surely that's been discussed before, and there are probably reasons for leaving it as an optional requirement.
I'm moving this to become a feature-request and not a bug. But in reality nothing much will happen unless you bring this topic to the curl-library mailing list, preferably with a will to do parts of the development yourself.
distros don't use c-ares because c-ares is still not a feature-complete replacement for the normal libc-based name resolver.
adding "hooks" to allow apps to do the DNS resolving with whatever code they want would perhaps be cool, but it isn't just a single entry-point or anything but a whole set of functions would be needed. In fact, all you need is to "emulate" a set of c-ares functions and you're set.