I feel that #1 usually happens not necessarily because a developer is trying to show off but because #2 and #3 aren't working well. If the process for coming to design decisions is too cumbersome and slowing down development too much, developers will simply circumvent that process entirely.
It's certainly a difference if you decide to use Ruby on Rails, or Django. I would take the second route then.
But when you need to get something done in one of the framworks, the first route probably is better. The second one is very dangerous as you can spend so much time discussing things that you end up spending hours not having done anything productive.