One more thing to keep in mind with your license:
Unless you're getting copyright assignments for
all contributed code, that code not assigned to you or your project remains owned by the contributor and only he or she can relicense it under any other terms. Once your project starts to grow this can effectively preclude changing the license even if everyone agrees that they want to change it. This happened to us with
NetBSD; although everybody wants to move all the code to a two-clause BSD license (in part because the advertising clause of the 4-clause license is especially annoying) there is a great deal of code that cannot have the licence changed because we can't track down the owners of the copyright. (The owner may not even be the author, such as in cases where the author is deceased.)
Regarding inability to use GPL code, that can go beyond amspire's points that a company may have internal reasons that they don't want to open all the source in their devices. Source code licensed from external vendors may not allow it even if the company would prefer to do it. Or, worse yet, certain open source licences are incompatible with the GPL, meaning that there are cases where you can't combine code from two different open source projects.
Personally, as someone who's been writing both opens-source and commercial software for a couple of decades now, I use GPL and accept only code with a copyright assignment to me when I'm interested in preserving my own ability to exploit the code commercially at a later date. The GPL in this case is essentially a commercial profit protection mechanism. If I don't anticipate that I'd want to commercialize a product, I use a much less restrictive license so that the code can do maximum good in the world.