Linus' opinion always was: "I give you source code, you give me your changes back, we're even."[1] That's his summary of GPLv2 and I think such an attitude is reasonable, and it might have certainly aided the Linux kernel development over time (almost sure of it).
He disliked the GPLv3 exactly because of that. Because in his opinion it's (paraphrased) "I give you the source code, and now I dictate to you how you are allowed to use it." (see same link).
Whether a BSD/MIT license hurts or helps a project is pure speculation. More permissive licenses might make code reuse more attractive, and be considered "more free" regarding code reuse. As to what code contributions you miss out on? Hard to judge. There definitely are companies building products utilizing FreeBSD / OpenBSD without committing all their changes back (or none to begin with).
Pick the right license for your project. You don't care and are happy if someone uses it? Use a permissive license (MIT/ISC). You want to develop the product, improve on it, and want the changes back? Use something like GPLv2. You deeply care about your code running on open devices? Use GPLv3.
There's no "one obvious right way" as far as I am concerned.
[1] https://youtu.be/5PmHRSeA2c8?t=2840 (from there to 56:51 it's about open source licenses)