They allow you to be creative. If you see a problem you want solved they let you solve it the way you think is best. This works well for skilled developers, and hurts the company for non-skilled developers.
Cons
Low salary compared to the national average (granted it's MS and it's relatively high/average for developers in MS). Non-skilled developers who don't seem to care about programming can hurt the company. They can take up a lot of senior developers time asking questions they've asked before and never learning.