I would start by debunking the HTML being overkill. It is possibly the easiest solution around you, especially if you want to typeset a lot for text (see this as example). It is no no harder than or more work than LaTeX. Secondly the way LaTeX works means can do pretty much any look and feel you like so no there are no anesthetics that it lacks. However in both of these cases the message form you is you don't know how to use these that's fine
Obviously you can use a page layout software like inDesign or Sribus (free) for this. Again doing it manually in page layout software like InDesign is no less work than doing this in Word, only slightly more tools at your disposal and your skill needs to be much higher. However if you want to do a XML import then you can automate a lot of this stuff but again this way its no less work than HTML which you said is overkill. Also again you don't know how to use these software.
Or a vector drawing application like Illustrator or Inkscape. Again these are no less work than html, just different kind of work. But on top of that you need to buy a new software and learn it.
Also there is really no reason why couldn't do this in Word again you know how to use it. So maybe a bit tedious, nothing that a script can not fix.
Here is a beginning for a script that does what thw webpage linked does. I'm out of time. I still brute forcing a few things but then i hardly ever use word (sic, last time i used it was 6 months ago because my colleague asked a question) One can make changes to this so it reads the data directly form the document paragraphs:
Sub sayBob(text, height)
Dim shape As shape
Set shape = ActiveDocument.Shapes.AddShape(msoShapeRectangularCallout, 10, height, 300, 10)
With shape
.TextFrame.TextRange.text = text
.Fill.ForeColor.RGB = RGB(170, 221, 119)
.Line.Visible = msoFalse
.TextFrame.MarginTop = 10
.TextFrame.MarginBottom = 10
.TextFrame.MarginLeft = 10
.TextFrame.MarginRight = 10
.TextFrame.AutoSize = msoTrue
End With
End Sub
Sub sayMike(text, height)
Dim shape As shape
Set shape = ActiveDocument.Shapes.AddShape(msoShapeRectangularCallout, 100, height, 300, 10)
With shape
.TextFrame.TextRange.text = text
.Fill.ForeColor.RGB = RGB(170, 170, 255)
.Line.Visible = msoFalse
.TextFrame.MarginTop = 10
.TextFrame.MarginBottom = 10
.TextFrame.MarginLeft = 10
.TextFrame.MarginRight = 10
.TextFrame.AutoSize = msoTrue
End With
End Sub
Sub demo()
sayBob "Hello", 10
sayMike "Oh hi", 60
sayMike "Oh, by the way I have your boat", 110
sayBob "yeah i know", 160
End Sub

Image 1: Result in word.
So while i can easily answer the question what would i use? I would use HTML or illustrator, but then i can do this in my sleep. The real question is what do you know how to use.