After a few attempts at fixing this by modding the xml files I've discovered this.
It seems like the relevant lines in the CoreSpells_xxx_tactical.xml files are lines like these (here from fire dart):
<GameModifier InternalName="FlameDartModifier">
<ModType>Unit</ModType>
<Attribute>DefendableDamage</Attribute>
<Calculate InternalName="AttackerIntelligence" ValueOwner="CastingUnit">
<Expression><![CDATA[[UnitStat_Intelligence]]]></Expression>
</Calculate>
<Calculate InternalName="Value" ValueOwner="CastingUnit">
<Expression><![CDATA[[AttackerIntelligence] * -0.5]]></Expression>
</Calculate>
<Calculate InternalName="Value">
<Expression><![CDATA[[Value] * [UnitStat_NumFireShards]]]></Expression>
</Calculate>
</GameModifier>
Specifically the line:
<Expression><![CDATA[[Value] * [UnitStat_NumFireShards]]]></Expression>
is not doing anything. For instance, changing it to
<Expression><![CDATA[[Value] * [UnitStat_NumFireShards] * 100.0]]></Expression>
should make fire dart insanely powerfull, but that is not the case. However, if the part that should account for the number of shards is removed, so that the line just reads
<Expression><![CDATA[[Value] * 100.0]]></Expression>
then the spell will be as powerfull as one would expect (i.e. 100 times as powerfull as it's supposed to be). [UnitStat_NumFireShards] appears to be invalid somehow, causing the game engine to ignore the statement which should take care of the shard number dependency.