I think it's a good software design question, private_click.
90% of the time, I do something similar to NogDog's code. The other 10%, I'm using some API or template engine with a built-in list generator, like Smarty.
I would probably only create a list class if I were creating a generic Form class, or if I wanted multiple types of common, reusable lists for a project -- or if I just wanted to leave room for them.
E.g. I would create a simple List base class, and then derive several other enhanced lists (containing JavaScript, etc.).
class BaseList { ... }
class EditableList extends BaseList { ... }
class DrillDownList extends BaseList { ... }
If I were making a generic Form class, BaseList would likely be derived from a generic form Element class.