The main problem with LWO is that engine always "fixes" them, which often breaks them
And engine cannot be changed due to backwards compatibility.
On the other hand, now we have OBJ support, which does not mess with geometry.
I already suggested to provide a way to load single group/object from OBJ by its name, by writing model name like "mymodelfile.obj$group=lod0". This way we can store all LODs in one OBJ file.
Maybe we can extend this group selection to other formats, although that would be harder.
Speaking of default distance.
The formula should be something like distance ~= A * sqrt(TriangleCount) with some constant A. I suppose constant A can be deduced by setting approximate average size of a triangle on screen with some default resolution (e.g. FullHD).