The key's in the name
Berkeley Software Distribution. Had separate ways to update the OS and applications pretty much from the word go, though they have changed over time.
Typical system upgrades might look a bit like this:
1) sign up to the relevant mailing lists, e.g BSD security
2) have a backup strategy and only update when you have to
3) freebsd-update fetch install
Depending upon your environment you can also run this in jail to see whether your system will be adversely affected - this rarely happens with system updates but applications can and so step on each other's toes.
Applications are managed separately from the OS and updates can be run much more frequently:
1) portsnap fetch update
2) portmaster -ad <- this will compile from source but also allow you to create packages for distribution if you have several machines
Separating the OS from applications might explain why applications on BSD are not frozen in lockstep with a version of the OS as they are on RedHat and Linux. Though to be fair that has something to do with the attitude of the package maintainers on Linux systems. BSD's ports are only metafiles which will allow apps to build but you are responsible for them running properly. Nobody's managed to explain to me why this means RedHat still ships with Python 2.4 (or at least it did the last time I was on a RedHat system), a version that has not been maintained by the PSF for over 5 years.
This might explain why BSD systems have notoriously long uptimes.