The FreeBSD (and other BSD'ish systems like Darwin / MacOS-X) have done the step to start over with an incompatible system - they do simply define off_t to be always 64bit and that's about it. All the software must be recompiled, and it not supposed to take binary-only software from the old era to the new one.
That ensure that there can be no invalid mixture of 32bit and 64bit off_t-size applications, and even more all the software is fully 64bit-clean - making sure that no "long" is used where it is not appropriate. It may require a bit of porting but it makes for a lot less problems after that.
Note that all Unix98 system are required to support largefiles, and in fact the latest Linux and Solaris system actually do that - the kernel works with 64bit offsets anyway. The non-64 api-calls do only exist as wrappers that catch api-calls from old binaries and convert them to the new 64bit-off_t calls.
In effect, with a complete change to off_t of 64bit, the software will be smaller and faster as opposed to a dual-type system that tries to support non-largefile binaries in a largefile system. And furthermore, it can be seen as a general advice that software makers do always compile in largefile-mode as soon as it is available. It makes the software faster and less prone to errors.