It's a lot of ancient history.
BSD *is* UNIX, with a code base that dates all the way back to Bell Labs in the late 60s. The "B" in BSD refers to the University of California at Berkley, which is where some of the most substantial modifications to original UNIX code originated.
BSD has more or less been the free-love-and-code poster child, as well as the UNIX of academic interest, as opposed to AT&T's more buttoned down official System releases.
In the 1980s and early 90s, the two systems had some minor differences, with some companies basing their commercial UNIX distributions on one or the other (e.g. SunOS and Dynix were BSD derivatives while Solaris represented a shift to the System V way of doing things).
386BSD was animplementation of BSD UNIX for 32-bit Intel PCs that was unfortunately in a murky legal state because of the derivation of code ownership. FreeBSD was, go figure, a noncommercial implementation of 386BSD. Free-, Net- and OpenBSD all have some claim to being "real UNIX." Work on those projects is done largely by closed teams. They add features more slowly, but there's a real reputation for high levels of competence throughout each.
Linux uses a kernel that isn't officially derived from any actual UNIX code. It can run the same standard set of GPL apps that any UNIX clone can, but of course Linux developments, advancements and forking distributions can be best likened to herding cats. There's not a great deal of consistency between distributions and no single authority on any project other than the main kernel development team.
BSD people pretty much see Linux as the shiny pretty thing that sometimes helps get useful software made. Linux people usually see BSD as the stodgy people stuck doing things old fashioned ways because someone thought it was a good idea 20 years ago.