It seems to me that brainstorming is good for any environment or situation in which there is not just one right answer or when a range of possibilities will lead to inspiration. Brainstorming is a way to get an entire group involved, because every contribution is valued; it is an opportunity to explore or refine. It can also be the beginning of a process to create concensus.
I honestly cannot contribute a "con" of brainstorming, as I believe it to be one of the best practices in learning, both for teachers and students.
In addition to the above comments, one thing I have found with brainstorming (both for myself and with my students) is that it seems easy and fun. There is no "pressure" when it comes to brainstorming. I'm not sure when the excitement for being the student who knows all the answers wears off, but it is certainly sometime before 9th grade. If it weren't for "brainstorming," as a high school English teacher, I might never receive a response from over half of my classes. As soon as I label something "brainstorming" however, everyone feels free to participate without fear of being wrong.
It works the same way with teachers in planning. We tend to come up with better ideas when we're allowed to (and comfortable with) get all the bad ones out first.
I would say that the pros of brainstorming are that (if it works out right) it can produce a lot of different sorts of ideas. This is especially important if you are trying to do something creative. This means that you might want to try brainstorming when teaching topics that require students to talk about ideas, rather than about facts. Brainstorming can be good in this situation because it can encourage students to think "outside the box" and to give their ideas without fear of seeming stupid (because everyone is just throwing ideas out there, not really claiming to have them perfectly thought out).
The major con that I have experienced with brainstorming is that it can be a waste of time if students do not take it seriously. This is a common problem with group work. If students do not really care, they might simply throw out ideas that they don't really believe in. They might just take the assignment as a joke and not really try. Of course, this is a con to pretty much any kind of assignment that you can think of.
I would say that "brainstorming" in any particular task is extremely important to any teaching lesson. In "brainstorming," I think that there is a way of "priming the brain" for learning about a task or engaging in a sense of understanding the depth and complexity about it. Brainstorming allows an opportunity for students to openly think about a task and help generate a starting point for exploration. If established with proper parameters, it can operate as a very good collective approach to beginning the task of understanding an academic problem. It is in this light that the idea of brainstorming is used in business settings. If there is a potential con here it would be that students might get "lost" from an intellectual point of view about a task. Brainstorming is wonderful, but like everything else in the classroom, it has to have a purpose, and a function. If it does not, then I think that students and classes might not be able to experience the full force and the effectiveness of the activity.