One mistake: Lance of Lethargy can only be applied once per turn.
You write:
both reduced movement by 10 ft
However, Lance of Lethargy states:
Once on each of your turns when you hit a creature with your eldritch blast, you can reduce that creature’s speed by 10 feet until the end of your next turn.
So you can only reduce the target's speed by 10 feet once in a turn.
Notable, spike growth does not require willing movement.
Everything else works as described. Notably, spike growth does not require willing movement:
When a creature moves into or within the area, it takes 2d4 piercing damage for every 5 feet it travels.
It only requires that a creature move within the area, the method and intent of movement are not relevant.
In contrast, the rules use the concept of “willing movement” to specify when movement must be of the creature’s own volition to trigger some feature. For example, the cantrip booming blade reads:
If the target willingly moves 5 feet or more before then, the target takes 1d8 thunder damage, and the spell ends.
Shoving a creature under the effect of booming blade will not trigger this effect, since such movement is not willing movement.
Now, you ask about the balance of this combo - it is balanced by the fact that it takes two turns to set up and your enemies are (usually) not stationary. It is a strong combo if it works, but since it will (almost always) require eldritch blast to be cast on your turn after you cast spike growth, there will often be time for the target to do some maneuvering to diminish the effectiveness of the combo. I say almost always because there are some dirty fighter multiclassers out there using Action Surge to cast two action spells in a turn.