Hannibal's plan depended on the Romans attacking. If the Romans stay well away from his infantry, then the plan won't work.
Essentially, we can either use general purpose AI, in which case Hannibal will advance his infantry and the battle will go nothing like the historical battle, or we can have the Carthaginians follow Hannibal's plan.
In the former case, people would complain it is nothing like the historical battle, in the second place then the plan only works if the Romans cooperate. (As Hannibal could more or less guarantee that they would).
It's a no-win situation for the scenario designer.
We erred on the side of following the historical plan - which doesn't work if the Romans don't play historically.
If you want to play a non-historical battle between Hannibal's army and the Romans, you can do that in Custom Battles.