How about this approach:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="http://tempuri.org/config"
exclude-result-prefixes="my"
>
<my:config>
<PC_group>
<item>15236</item>
<item>15237</item>
</PC_group>
<!-- more groups like this... -->
</my:config>
<!-- create a reference to our own config -->
<xsl:variable name="config" select="document('')/*/my:config" />
<xsl:variable name="PC_group" select="$config/PC_group" />
<xsl:template match="RecordDetails">
<grouped_RecordDetails>
<xsl:apply-templates mode="group" select="Record[Charge/@PT='P']" />
</grouped_RecordDetails>
</xsl:template>
<xsl:template match="Record" mode="group">
<xsl:variable name="myPC" select="AggSet/Att[@Ty = 'PC']/@Id" />
<!-- select all the PCs in this group -->
<xsl:variable name="groupPCs" select="$PC_group[item = $myPC]/item" />
<!-- identify all other members of this group -->
<xsl:variable name="groupMembers" select=". | ../Record[
Charge/@PT='P' and AggSet/Att[@Ty = 'PC']/@Id = $groupPCs
]" />
<!-- do the actual grouping, just like the Muenchian method... -->
<xsl:if test="generate-id() = generate-id($groupMembers[1])">
<!--
we are at the first Record in this group now
all the other group members are at $groupMembers
output whatever details you like here
-->
<xsl:copy-of select="." />
</xsl:if>
</xsl:template>
<xsl:template match="text()[normalize-space() = '']" />
</xsl:stylesheet>
sample output
<grouped_RecordDetails>
<Record>
<contact id="0001" title="Mr" forename="John" surname="Smith" ST="M" />
<AggSet>
<Att Ty="Addr" Id="43 Menelaou Street" />
<Att Ty="PC" Id="15230" />
<Att Ty="Num" Id="2580052635" />
</AggSet>
<Charge Amount="3.000" PT="P" />
</Record>
<Record>
<contact id="0001" title="Mr" forename="John" surname="Smith" ST="M" />
<AggSet>
<Att Ty="Addr" Id="65 Dankan Street" />
<Att Ty="PC" Id="15236" />
<Att Ty="Num" Id="2580052635" />
</AggSet>
<Charge Amount="10.000" PT="P" />
</Record>
</grouped_RecordDetails>
Edit: Of course the grouping can all be done in one big, messy XPath expression, if you prefer:
<!-- identify all members of this group -->
<xsl:variable name="groupMembers" select="
. | ../Record[
Charge/@PT = 'P'
and AggSet/Att[@Ty = 'PC']/@Id = $PC_group[
item = current()/AggSet/Att[@Ty = 'PC']/@Id
]/item
]
" />
Splitting it up into several variables makes it easier to follow, though.