Why there are many BSD systems but only one Linux kernel?
I wonder why BSD was forked many times, but no such thing with Linux.
You are comparing kernel and whole systems.
Kernels are just the main central piece of a system, but not all of it. In fact there is no such thing as a Linux system per se, but there are countless "Gnu/Linux" or other Linux Kernel based systems (one being Android).
Linus Torvalds choose to concentrate his work on the central piece and successfully manage to keep control of it ("Linux" has been a trademark for quite some time in fact).
About numbers, there is only a couple of BSD systems (one being Apple OS-X) and countless Linux based system (aka "Linux distributions" - see DistroWatch):
The fact that the Linux kernel is distributed through a GPL licence might have some impact on the way Linus Torvalds managed to keep control. But watching the way BSD system are not forked or are not used more than that make me wonder if it is that way because of the licence or because they are whole systems. Having a lego-like model with a modern kernel and a bunch of Gnu-tools around might be more appealing (?).
There are literally hundreds of different Linux-based systems, compared to a handful of BSDs (and a somewhat larger number of propietary Unix systems). Some speculate that the coherence of the Linux kernel (all Linux systems share more or less the same kernel; there are variants, like Android's, or more or less severely patched "enterprise" systems, but nothing important approaching a fork) is due to the GPL, which forces anybody who distributes it to share their modifications, so they tend to get integrated into Linus' version sooner or later if they are worthy. Probably a large part is due to Linus' ability to attract talented people to the project. Somehow the community grown around Linux hasn't splintered, and that has more to say about the personalities involved (specially at the top) than any technical or license issues.
Berkeley Software Distribution predates Linux by almost 15 years (circa 1977). To make a long story short (and simple), the story of BSD is the story of UNIX breaking free (more than once, up to 4.4BSD Lite) of AT&T's source code and licensing. It is also about the development history of networking i.e. NET/2 and, as times changed, and academia IT overflowed to enthusiasts as communication expanded, is related to this desire of bringing this rich tradition to low cost machines i.e. PCs (one should never forget that none of that historical UNIX was made to run on the PC/386 architecture initially). But the pressure was too great for the 386BSD project to withstand its own success so to speak. The breakup which ensued (386BSD based vs. NET/2 + Mrs/Mr Jolitz 6 files) and the different focuses (386 vs. multi-platform network) basically explain the differences between FreeBSD and NetBSD (or OpenBSD). But it is all BSD, unencumbered 4.4BSDLite has trickled down to all "forks", the licensing is settled and Berkeley's amazing legacy lives on free now...
Linux/GNU is a UNIX-like OS but has no direct ancestry in UNIX. It is a product of its time (1991, much later than historical BSD) and designed to run on modern consumer hardware as well as other architectures. The Linux kernel was (and still is - for instance there were on average 9 accepted changes per hour into the 3.10 kernel) a powerful catalyst, and rapidly converting to using the GPL licensing scheme made both it and the GNU project a "perfect" fit for one another. Similar to how UNIX historical shell utilities and commands had emerged from AT&T's hold gradually up to 4.4BSDLite and NET/2, so did they through GNU which Linux enabled. Beyond the quality of the project and the leveraging of a worldwide community, an argument can also be made where Linux/GNU is seen as the most POSIX compliant free OS around and as the standard might have favored System V behavior over BSD, it is possible this also added to the attraction power of Linux.
You fork for a reason. It seems conditions existed for it to happen with BSD. It seems there is no such rationale for doing that with Linux for the time being...