It’s not as bad as that. ViewPorts are JME’s “official answer” to this problem every time I brought it up in the past.
One GUI element (the scroll panel, say) manages the ViewPort and just sticks its child in there. Most everything else “just works”. Lemur will forward GUI events properly, etc. as long as the viewport has been registered with GuiGlobals as a picking root.
It’s not so onerous. The only issue is if you want multiple windows overlapping with their own viewports… but screen space clipping will have that exact same issue.
Scaling wouldn’t work because they’d stretch funny. The backgrounds would have to have their texture coordinates clipped. Basically, everything you’d want to include in the list (background, icons, selector) would have to have some special case added to handle it.
ViewPorts seem more attractive over that, to be honest. I have on my to-do list to add a ScrollPanel to lemur-proto but I haven’t had the time. This would fortunately insulate Lemur users from whatever the “best way” is in the future.