No, you did the right thing. In LV 7.x the code couldn't handle the reference type directly inside of LV and so the reference was turned into a LV refnum. This has been changed in the next version.
The fastest solution is to create a little helper class that has a get/set property for a string reference. This would be a lot easier than the other solution I can think of, which is to call the reflection API directly.
The class would look something like
public static String GetString(ref String arg)
{
return arg;
}
public static void SetString(ref String arg, String newValue)
{
arg = newValue;
}