Your code seems to work as expected for me. I tested it like this:
func _ready():
var a = [["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], ["j", "k", "l"]]
set_result(a)
func set_result(rows: Array) -> void:
$RichTextLabel.push_table(3)
for row in rows: # Add table values
for key in row:
$RichTextLabel.push_cell()
$RichTextLabel.add_text(key)
$RichTextLabel.pop()
That generates a table containing 4 rows (the 4 sub-arrays) and 3 columns. I don't see any overlapping text...