It is not an uncommon limitation, since null-bytes are not used in text files. There is of course a FreeBSD port for GNU patch.
For context, just looking at the manual pages for FreeBSD:
Both GNU patch and FreeBSD patch originated with Larry Wall's patch program, but the former has had more extensive changes. In particular, GNU patch was extended to handle the embedded nulls which might be output by GNU diff. Still, even that was done quite a while ago (around 1992 according to the changelog).
For whatever reason, the FreeBSD developers did not incorporate this change. If you need the feature on FreeBSD, you can use the port (or precompiled package) of GNU patch. See FreshPorts for a summary.