For what it's worth, if I had to decide between the directional commands (e.g. "southeast") and the numerical position, I much prefer to have fine manual control through the latter. Having both available would be the ideal solution.
An alternative is to write a script that generates position vectors from the current axes - for example, rather than calling
lg = legend("Test text","location","southeast")
one might call
[northeast,southeast,...] = location_generator(gca);
lg = legend("Test text","position",southeast)
In oxy's example, this position vector could then be used for other things like annotations as well.
Actually, that gives me an idea: here's an awkward way to do things that might accomplish what you want by harvesting the position value from a temporary legend:
lgpos = get(lg,"position");