Unfortunately the latter. LilyPond isn’t equipped for that kind of text
processing; while markuplist can be used for pagebreakable markup, there
is no way of directing it into columns other than hard-coding breaks,
splitting it up and using \line or \table markup (list) commands.
Your best bet to actually do this would be modifying paper size and/or
line-width for the book-part or book in which you have the TOC and using
external tools to produce the two-column layout.
I actually ended up doing a bit of coding to extract the data from "standard" one-column index in the PDF produced by Lilypond, fed the data into LaTeX to produce a nice-looking two column version, and then splicing in my index in place of the one in the Lilypond PDF. It seems to be working like a charm for me.
Thanks for the advice,