I would suggest that it is not that we cannot implement XA or 2PC for microservices, but rather that the HTTP-based API world hasn't been politically acceptable yet. In an older application, components might represent a larger set of complex business logic steps, but also span, hardware, geography, organizations and technologies. i.e. my business components could be spread across multiple companies with different user interfaces in each. The network protocols to integrate all these supported distributed transactions (2PC) as well as propagating user identities, etc.
This has the bureaucracy and legacy taint to it. Standardized distributed transactions supported by multiple interoperable platforms go back to the '80s. IT being heavily fashion-driven, what would happen in your workplace if you advocated too heavily for this type of feature.
Note: on the question of what would happen if the controlling node is down. In traditional applications, if the component committing the application died in mid-commit, the transaction would eventually timeout and be rolled-back on each of the components. In some cases recoverable transaction features were available. if the committer recovered before the time-out it would recover the transaction and continue the commit. We see this in enterprise applications a lot if an application server bounces, it recovers in-process work.
while I'm in a ranting mood :) - some pundits claim that XA has to be implemented on a single platform, like JTA. I've never found this to be true, XA has always worked for me across databases, application servers, and mainframes seamlessly)