Considering that siege towers were extremely heavy and hard to maneuver, why didn't the defenders just build dirt slopes and mounds around the walls, so the attackers wouldn't get them near the walls?
Also, should the attackers try to flatten the slopes, they would be in range of the archers on the wall.
I'll admit my knowledge of later siege warfare is limited, but in the late Roman/early Byzantine period the fact that walls were surrounded by such defensive earthenworks was the reason why siege towers weren't used. Priscus fr. 1.1a (Given Translation) says Attila used such towers as firing platforms for his archers, as an elevation advantage, for example, but the walls were breached via the gatehouse with a battering ram. Ammianus, Procopius, etc. in their description of Persian sieges discuss how they used primarily ramps and mining to defeat walls.
The only real attempt at using Siege Towers I know of took place in the Gothic Wars, recorded by Procopius, in which the Goths built four siege towers to attack the Aurelian Walls of Rome (which still stand, mostly). However, the Romans defeated them quickly by killing the Oxen drawing them towards the walls. (Procopius, Wars, 5.22 (Kaldellis Translation)) The second time Vittigis tried it (having learned from his first mistake) the Romans went out at night and dug a great trench before the deepest parts of the walls and the tower sank in and fell over when they tried to bridge it with logs. (Procopius, Wars, 6.12)