The asynchronous command has priority. But set_max_delay and set_min_delay has second highest priority, so if you didn't do set_clock_groups, and instead did a set_max_delay 10 between all asynchronous clocks(in both directions), that would be what you want. I would also recommend doing a set_min_delay -5.0 or something like that. It's possible for paths to go between clocks, where they might be on different clock resources like a global and a regional, and if you had a 0ns hold requirement, the router would be adding delay on these "semi-asynchronous" paths, just to meet timing.
And on a thread where I'm trying to show people how powerful and good set_clock_groups is, thanks for scaring everyone. (Just kidding...:) )