Mixture of licensing, technical, and personality/political/religious issues, I think, depending on the person involved (not everyone has the same motivations). The three big camps are probably: 1. people who think GNU software sucks technically; 2. people who don't like the GPL; and 3. people who really dislike the FSF and/or Richard Stallman.
The first reason probably applies most to big projects like gcc, where it's alleged that the FSF's development process has led to un-modular, hard-to-maintain software. But there are some differences on smaller projects as well, where the BSDs have a tendency to prefer more use of libraries with command-line apps as front-ends to the libs, while the FSF prefers self-contained command-line utilities that interact in the traditional Unix piping style. E.g. GNU tar and GNU gzip are mostly self-contained utilities, while the BSD versions have all the real code in libarchive and zlib, with some command-line frontends.
Some of the more minor rewrites I assume are due to licensing or personality/political issues (I doubt technical reasons are what lay behind OpenBSD writing GNU bc/dc workalikes).
Number 2 is the biggest issue that is pushing this change. With the GPL 3 none of the new GCC versions could be imported into the base system for FreeBSD as such the base version for GCC has had to stay behind on the last viable GPL 2 version that was available. This has led to major compiler improvements not being available to create better binaries. It was decided that instead moving to a BSD licensed compiler stack would ultimately lead to a better solutions, easier to update, less GPL components that would taint any of the systems thereby causing less licensing issues and headaches for people who want to use BSD systems.
Number 2 is the biggest issue that is pushing this change
I disagree. Having just spent a week at BSDCan and the attached FreeBSD developer summit, I'd say that the biggest reason is code quality.
Apple very definitely supported LLVM/Clang because they wanted to avoid GPLv3. FreeBSD is very happy to have a superior compiler available, and the fact that it's BSD licensed is extra icing on the cake. But if LLVM wasn't happening, I'm 100% certain that we would end up importing a newer (GPLv3) version of gcc.
The first reason probably applies most to big projects like gcc, where it's alleged that the FSF's development process has led to un-modular, hard-to-maintain software. But there are some differences on smaller projects as well, where the BSDs have a tendency to prefer more use of libraries with command-line apps as front-ends to the libs, while the FSF prefers self-contained command-line utilities that interact in the traditional Unix piping style. E.g. GNU tar and GNU gzip are mostly self-contained utilities, while the BSD versions have all the real code in libarchive and zlib, with some command-line frontends.
Some of the more minor rewrites I assume are due to licensing or personality/political issues (I doubt technical reasons are what lay behind OpenBSD writing GNU bc/dc workalikes).