Gaijin’s horrible coding, for the most part. The Spike, or any other ground-launched FNF missile, either doesn’t lock at all, locks onto friendlies / dead tanks near you, doesn’t track properly, hits the tank in non-vital spots (machine gun, track, etc.), or completely misses.
For the most part, it’s a gimmick and shouldn’t be relied on for anything other than killing the occasional light tank.