AFAIK, the issue with hibernation, partly at least, is because they don't provide an alternative sleep method via firmware. Only the default method is available; e.g. S2idle on Linux.
I was about to link to a discussion about that, but that seems to be gone as well.
The relevant kernel docs here: https://www.kernel.org/doc/Documentation/power/states.txt