I've always heard arguments like he didn't have siege equipment or his army was tired and depleted after Cannae but they never seemed convincing.
The siege equipment one is probably part of the answer. Something that's important to understand is that besieging a walled, well supplied city is HARD. A few centuries earlier, during the Pelleponisian war, the Long Walls of Athens rendered it essentially invincible, despite the massive superiority of the Spartan and allied army. (In numbers, it should be noted.) Despite the fact that the Athenians had no chance in a field battle, their city wasn't even attacked. It simply wasn't worth it.
Now, 3rd century Romans were probably better at siegecraft than 5th century Greek City States, and the same may be true of their opponents, (Admittedly, I'm not sure of Carthaginian siege capabilities) but it's basically irrelevant. While Rome's armies were depleted following Canne, (As well as The River Trebia and Lake Trasimene) Roman manpower was not exhausted by any stretch. It's quite possible, in fact likely, that the forces Rome could gather to defend Rome itself would outnumber Hannibal's army. Sieging a defended city with good walls, good supplies and motivated defenders that outnumber you basically doesn't happen. Hannibal was deep in enemy territory, fighting enemies that had vastly superior resources. A siege of Rome wasn't going to succeed.