Well, not sure if this is the "right" way to do it, but I found what appears to be a working fix.
Since the menu categories are created in code-behind, I added a null function to the navigate url property:
MenuItem Category = new MenuItem();
Category.Text = menuRow["Category"].ToString().Trim();
Category.Value = menuRow["Category"].ToString().Trim();
Category.NavigateUrl = "javascript:(function(){})();";
Now a tap on the iPad/iPhone holds the menu open, and other browsers don't seem to be affected (hover still works).