Pros
Career advancement is a huge plus. It is very simple to move between groups at Microsoft. they also actively encourage you to move if you feel you aren't getting what you need from your current group. Being able to move between groups allows you to try out different areas - Windows, Office, Internet, developer tools, and even mobile are all within reach if you are smart enough and driven enough. Benefits are hands down the best I've seen. Also with offices in Bellevue, Seattle, and Redmond, you have many different places to work. Microsoft also has in some locations open work areas. So you can easily go spend a day at another location. This is extremely helpful when working cross group. The connector commuter service is incredibly useful as well. Wifi on the bus with nice comfortable seats.
Cons
Groups tend to reinvent the wheel a lot because they don't want to be tied to another group's development schedule. This is commonly known as "Not Invented Here" syndrome. Working on open source software in your spare time is a gray area that many developers just tend to ignore instead of trying to navigate it. Compared to a start up, things move very, very slowly at Microsoft (depending on the group). Also not a week goes by that some kind of survey goes out asking how they are doing. the review process is like 20 different forms (I only slightly exaggerate). It can take a week or more of concerted effort to do your review. Couple that with your normal work week and that week is very stressful.