Are you suggesting you'd just need to create one custom tag for "table" and construct a regex that would account for a variable number of TRs and TDs?

I'd love to see that.

The reason I think it's more complicated than that is due to a table's unbound structure. The list markup is something similar to table markup, and it was implemented via a function(!) for ubb.threads, not a simple one-liner regex.