It looks it's independant from smoothing groups and always displaces into average normals direction. Chamfering, or adding support edges, should fix this, but that's not always viable solution. Sure, this behaviour is good for keeping edges from tearing appart, but without user's control, it will give very undisareable results in too many cases. I wonder when that was implemented?