They presumably did it because they thought it would be a good idea. Perhaps they wanted to hide implementation differences between different OSes. Either way, the low-level functions in FreeBSD work just fine.
FWIW, i just ran "man funopen" on my netbsd box and it says: HISTORY The funopen() functions first appeared in 4.4BSD. BUGS The funopen() function may not be portable to systems other than BSD. To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-questions" in the body of the message