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).
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.