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.