If you look in fo/autoidx.xsl, the stylesheet module that handles
indexterms,
you will find this line:
<xsl:value-of select="primary"/>
Taking the value of an element returns just the text content of the element,
including those of its decendent elements. I suspect this was done on
purpose to give the index a consistent look and to avoid complications
that might arise when elements are formatted. There are
elements that are allowed inside <primary> that would break the formatting
of an index. For example, revhistory is allowed, but it generates a table.
If you want to change that behavior, you will need to customize several
templates in fo/autoidx.xsl. For example, replace the above line with:
<xsl:apply-templates select="primary/child::node()"/>