Today, Alberto Pesquera and Me have reached to an approach, I think it could be ok.
The idea is to substitute every level of tree_sortkey by the "pretty name", excepts the first one, that will remain unchanged, with a PL/SQL function, and then, sort by this new "field".
For instance, a tree_sortkey (let's say that every level has only 2 digits) like:
00+02+01+05+... (plus sings only for improve reading)
will be translated into:
00+course about blablabla+subgroup of blablabla+subgroup of a subgroup+...
That way, every course will be under "Courses" item, and every community under "Community" one, and every set of subgroups will be sorted alphabetically below its parent. Let us try it, but I think it sounds reasonably well.