They differ in their development models, families of related operating systems (consider TrueOS, DragonFly, MirOS, et al.), ports and packages mechanisms, extent of kernel APIs, filesystems, and toolsets.
Just three out of many examples:
* NetBSD's and OpenBSD's "wscons" subsystem for kernel virtual terminals is significantly different to FreeBSD's "syscons"/"vt" subsystem.
* OpenBSD's packing list files for pkg are different to FreeBSD's manifest files for pkgng.
* On OpenBSD, /bin/sh is the Korn shell, which is also the superuser's standard interactive shell, and the base toolset contains things such as doas and rcctl. On FreeBSD, /bin/sh is the Almquist shell, the superuser's standard interactive shell is the C shell (and the "toor" user exists), things like sudo come from ports, and the command for manipulating rcconf files is sysrc. /bin/sh is the Almquist shell on NetBSD, and the PD Korn shell on MirOS.