A note for posterity: John Cerney, the author of TableMatrix got back to me by email. Essentially, there is no better solution than the one outlined above (get column width and character numbers for each cell and calculate the required height based on that).
in reply to Auto-adjust row height to line wrap in Tk-Tablematrix
Regarding the tcl/TkTable solution I posted above he wrote the following:
I don't think the base TkTable widget has a better way of doing this either. I saw the link you supplied ( http://wiki.tcl.tk/1877 )
This solution implies you can get the text for a wrapped cell, and it will have newlines (\n) where the text is wrapped. I tried this using the tcl/tk TkTable widget and it didn't work for me. So it appears there isn't really a solution for TkTable either.
What is really needed is access to the Tk_ComputeTextLayout utility function, which is what TkTable.c uses internally to determine where to wrap a string. Unfortunately this interface is not exposed to perl.