The problem isn't that Microsoft implemented an unfinished API. It's that they implemented an unfinished API
and didn't update it later to reflect the changes.
When new APIs are in development (in a standards body) by all means implement the incomplete/early version in your browser! Just put a warning somewhere for developers that changes will happen and that they should expect to have to update their code along with the standard as each iteration comes out.
Microsoft made a huuuuuuuge mistake by implementing an unfinished API and then refusing to make breaking changes later. Breaking changes are to be expected when you do stuff like this!
Back when MS did this they were still highly arrogant about their position in the browser market and probably still thought they could get away with their usual "embrace and extend" bullshit... Where they decide "the standard" regardless of what any standards body or the rest of the world/community thinks.