Most criticisms of OOXML deal with the fact that it is a hastily implemented pile of incomprehensible rubbish that no-one in the world will ever implement correctly and that Microsoft is allowed to change at will without consultation. However, this actually utterly misses the point of the problem of OOXML, and the reason why MS is so opposed to ODF.
The issue is that ODF forbids you from embracing and extending while OOXML allows you to. This means that if you've got an ODF document and an ODF reader, you can read the document. This is not true for OOXML as anyone (MS) is allowed to put random rubbish in the middle of the document, that a different application might not understand.
MS criticises ODF for missing features, but never make clear that this 'problem' cannot be fixed by adding features; they are in fact criticising ODF for standardising what constitutes a valid ODF document.