I can't find the link (though I'm sure it was on HN at the time...), but there was a talk by the Sony PS4 compiler people that touched on this a while ago. They ended up open sourcing as much PS4 stuff as they could, not because they wanted to as such, but because it was taking them too much time to do the merge each time they updated their copy.
You're right, Microsoft has pushed a lot of changes upstream to projects in the past for it's own selfish reasons. That doesn't mean said changes are bad, a lot of times they're fixing problems that they're tired of having to provide support for to end users.
A company at a disadvantage may find it in their own interest to act like good guys with respect to open source projects.
Fast-forward a few years: if people become dependent on the new tool and there's money to be made differentiating their tooling from others, their attitude may change.
The debate about licenses becomes more interesting once a contributor finds themselves in a position of power vs other contributors.
Or maybe they just get tired of having to vet their changes and designs with third parties. Getting code accepted upstream can be a lot of work.
If you look on Github (even Apache), there are Microsoft employees making contributions to open source projects under their own accounts or as part of the organization. Steps under Satya have made engagement with open source across the company generally much better, not just in field/evangelism roles. This is in addition to works like this and open sourcing of things like the CLR, etc.
Yeah, but you will notice none of those are GPL projects - and my point is OSS works as a business/support/development model even outside of "monetize on support model and force a level playing field with copyleft" (eg. RedHat) - for a large number of cases it makes sense/the incentives are right even with liberal licensing.
Even for weird little side projects, it's always feels safer to me to get changes upstreamed than keep carrying around "special snowflake" vendored copies that diverge.