The only working solution I found so far (at least for Ruby 1.8 because Ruby 1.9 should handle Unicode better) is Unicode by Yoshida Masato. You can find Unicode.strcmp method there.
EDIT: Sorry, this solution uses NFD decomposition as well with all its limitations.