Sure, manually adjusting height is feasible, and maybe the right solution in most cases.
Though, a friend of mine Udasan has created a short C# code snippet to automatically adjust to either height or width.
(original code is published on his website, and he agreed to share the snippet here below. No liability for usage, and etc.

)
If you attach this NGUIUtilScalableUIRoot script to UIRoot, it will adjust to either height or width as the attached screen shots.
In any way, it would be great to see this "automatic adjustment" functionality included in further versions of NGUI, as already discussed to make sense. Will this happen?
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class NGUIUtilScalableUIRoot : MonoBehaviour
{
public int manualWidth = 320;
public int manualHeight = 240;
UIRoot uiRoot_;
void Awake()
{
uiRoot_ = GetComponent<UIRoot>();
}
void Update ()
{
if(!uiRoot_ || manualWidth <= 0 || manualHeight <= 0){ return; }
int h = manualHeight;
float r = (float)(Screen.height * manualWidth) / (Screen.width * manualHeight); // (Screen.height / manualHeight) / (Screen.width / manualWidth)
if(r > 1){ h = (int)(h * r); } // to pretend target height is more high, because screen width is too smaller to show all UI
if(uiRoot_.automatic){ uiRoot_.automatic = false; }
if(uiRoot_.manualHeight != h){ uiRoot_.manualHeight = h; }
}
}