The Impale ability computes the damage as if you made a physical attack for the total combined rating of your unit's attack. Thus, for your Air Elemental, the Impale damage was calculated as if your Air Elemental Spear had a physical attack rating of 30 rather than a physical attack rating of 2 and a lightning attack rating of 28. In other words, your unit's attack got converted to a physical-only attack when you made use of Impale.
If you wanted to change this, you could go to CoreSpells.xml and change this
-<SpellDef InternalName="Impale_Ability"> <DisplayName>Impale</DisplayName> <Description>Stikes the target unit and the one behind him.</Description> <FormattedDescription>Stikes the target unit and the one behind him for a %d Attack.</FormattedDescription> <IconFG>Ability_Impale_Icon.png</IconFG> <Cooldown>5</Cooldown> <SpellBookSortCategory>Unit</SpellBookSortCategory> <SpellBookSortSubCategory>UnitDamage</SpellBookSortSubCategory> <SpellType>Tactical</SpellType> <SpellClass>Offensive</SpellClass> <SpellSubClass>Damage</SpellSubClass> <SpellTargetType>EnemyUnit</SpellTargetType> <HideInHiergamenon>1</HideInHiergamenon> <IgnoreInvalidTargetsInRadius>1</IgnoreInvalidTargetsInRadius> <IsCastable>0</IsCastable> <CanBeDodged>1</CanBeDodged> <IsSpecialAbility>1</IsSpecialAbility> <Radius>1</Radius> <RadiusType>LINE_FORWARD</RadiusType> <Range>1</Range> -<GameModifier> <ModType>Unit</ModType> <Attribute>DefendableDamage</Attribute> <AttackStat>UnitStat_Attack_Pierce</AttackStat> <IsForFormattedDescription>1</IsForFormattedDescription> -<Calculate InternalName="Calc" ValueOwner="CastingUnit"> -<Expression>
<![CDATA[[UnitStat_CombinedAttack] * [UnitStat_BonusImpale]]]>
</Expression> </Calculate> -<Calculate InternalName="Value"> -<Expression>
<![CDATA[[Calc]]]>
</Expression> </Calculate> -<Calculate InternalName="ValueForFormattedDescription"> -<Expression>
<![CDATA[[Calc]]]>
</Expression> </Calculate> </GameModifier> -<AIData AIPersonality="AI_General"> <AIPriority>5</AIPriority> <AIMinSpellTargets>2</AIMinSpellTargets> </AIData> <HitSoundFX>Ability_Impale</HitSoundFX> </SpellDef>
so that the highlighted part gets computed for each separate damage type (you'd compute attack damage for Attack_Lightning, Attack_Fire, Attack_Cold, Attack_Pierce, and Attack_Poison, and you'd have separate damage blocks for each of those). You would change UnitStat_CombinedAttack to instead look at each possible damage type.
Someone else, such as Parrotmath or Heavanfall, can probably tell you how to do so better than I can