Yes, I suck at formatting. Deal with it.
The problem is essentially this: These spells take the total attack value of targets, then provide an absolute Attack_Boost. Casting Shrink or Shrink_Ability on targets with existing multipliers will devastate their attacks. A perfect example of this is when a player casts Shrink on a Juggernaut or Escaped Juggernaut.Their attack is reduced to 0, making it a free kill.
But let's start at the beginning.
In FE, multipliers are additive. That means if I have two effects that grant me +50%, then the result is that I get +100% (50+50=100).
Shrink, for example, fetches the final attack value from its target, then reduces its attack value by half that. But the Juggernaut has a multiplier in effect already.
Juggernaut base attack: 10
Juggernaut final attack: 10 + 200% = 30 <- Game fetches this value for Shrink
Shrink then takes that value and divides it by half, and gets 15. This is "half the Juggernaut's attack value". It then removes that value from the Juggernaut.
Juggernaut's Shrunk attack: 10 - (30/2) = 0
Juggernaut final attack: 0 + 200% = 0
This problem does not only affect Juggernauts. Let's take a Champion instead. This champion is a bit of a nutter and has amassed the traits Swordsman, Swordsman 2, Swordsman 3 providing it with (10%+15%+20% = 45%) multiplier to its value.
Swordsman's base attack: 20
Swordsman's final attack: 20 + 45% = 29 <- Value fetched by Shrink
Swordsman's Shrunk base attack: 20 - (29/2) = 5.5
Swordsman's final attack: 5.5 + 45% = ~8
These problems applies to Growth spell and GiantForm spell as well, but in reverse (there, instead, you gain additional bonuses for casting it on such units instead of suffering penalties).
The Fix
The fix is simple. Instead of applying absolute attack_boost values that are calculated using a formula, apply the modifiers as multipliers instead. This way, the spells will work as modifiers of the base value instead of the multiplied value.
Swordsman's base attack: 20 <- Value fetched by Shrink
Swordsman's final attack: 20 + 45% = 29
Swordsman's Shrunk base attack: 20 = 20
Swordsman's final attack: 20 (+45%-50%) = 20 * 0.95 = 19