I think their choice of JSON-LD as the recommended format and not being transparent in how it effects results is the biggest issue. JSON-LD requires duplication of content, where as microdata is inline with existing content.
JSON-LD is far easier to work with. Having to mix metadata with markup was a pain. Half the required elements would have to be hidden in CSS because they didn't make sense in context.
And you can generate it dynamically: https://developers.google.com/search/docs/guides/generate-st...