You should use templates if you need to override our default rendering with custom markup- if it's just html (no server controls) you're after, you can use client templates. Here's a quick example loosely based on the above:
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<ul>");
sb.Append("<li>steve</li>");
sb.Append("<li>hatcher</li>");
sb.Append("</ul>");
ClientTemplate template = new ClientTemplate();
template.Text = sb.ToString();
template.ID = "myTemplate";
Menu1.ClientTemplates.Add(template);
ComponentArt.Web.UI.MenuItem parent = Menu1.FindItemById("p1");
ComponentArt.Web.UI.MenuItem newItem = new ComponentArt.Web.UI.MenuItem();
newItem.ClientTemplateId = "myTemplate";
parent.Items.Add(newItem);
I hope this helps.