I'm afraid, that no other solution will be as clean, elegant and straigth forward.
For a single cell per row, you could populate a multi-value field (which transforms into a text area in the browser) and write the outer tags of a table in pass-through-HTML. The rows and cells could be calculated by some computed text acording to that field, i.e.:
<br>
<table border="1">
<tr>
<td>
<Computed Value>
</td>
</tr>
</table>
as pass-through-HTML and the computed text being calculated to
@Implode(Content + "[</td></tr><tr><td>]")
where Content is the name of the mult-value input field.
However, this will be hardly manageable with more complex table structures and even im my small example I always have one empty row at the bottom of my table. It's probably possible to avoid that as well, but as I said: Not clean, not elegant, not straight forward.