It's sort-of a toss-up to me—while these things aren't true, do this other thing, or do this thing until these other things are true. It's one less condition to use the Until action, as I don't have to check for an empty value. But really, I tend to write it either way :).
Unless I'm misunderstanding, you can do this in another way, using PWL's ability to store a different value than what's displayed, as explained on the PWL wiki page. Basically, you can name a return value, add two underscores, then put your visible text, like this:
House__I would prefer to rent a home
Apartment__I would prefer to rent an apartment
This way, the return from PWL isn't the long ugly text, it's whatever you put to the left of it. This lets you do some really cool stuff. Your codes, for instance, could just be part of those terms:
group1-varname__whatever text
group2-varother__etc
group1-varname__etc
Where this gets really powerful, though, is in the ability to use a variable on the left side of the expression, as I explained here:
Using Prompt With List to modify variables on the fly
My first PWL makes a new global variable, and the next uses that variable as input in the left side of the PWL box answers, thereby modifying the variable based on the user's selection. This is such a powerful feature, I've found myself using it often.
Now … if that's not what you're describing, I apologize for the off-topic meandering :).
-rob.