The nuclear weapons are so powerful, what you usually want to build your tactic around them.
And you just explained exactly why it SHOULD be probabilistic. Nukes are powerful, extremely so, to where you can build an entire strategy around using them. If nuclear attacks had no randomness to them, to where you knew that missiles would either always get through or would never get through (based on what sort of deterministic defense you DO come up with), then the player has a huge advantage over the AI. All you'd need are enough missiles to overcome whatever barrier is added, and you'll be capable of completely gutting an enemy empire, while an AI that simply launches missiles as they become available would never get through.
I think the defense should be more tactical to counterplay, like the solution I've described above.
Then go program that. Oh wait, WE CAN'T.
We're limited by what's currently possible in the Lua functions we've been given. There are no stubs other than the by-player nuke interception chance that can be used for this. The aircraft interception chances are done by unit (as in, what's the chance that my current attacking unit gets intercepted, or how many intercepts does the defending unit have left), neither of which helps here.
The biggest problem is the triggering event. The only combat-related events we have are RunCombatSim and EndCombatSim. These have no positional information in them. Normally, the defender will either be a unit (in which case you CAN extract position) or a city (in which case you can't tell which city is being attacked), but nukes don't have that; nukes target a hex, not a city or unit, and so there is no information about the defender at all. That's why, in the nuke interception model I added (the math for which I posted earlier in this thread), all civs at war with the attacker pool their interception chances (with a diminishing return); it's not that I wanted to do it that way, it's that
you can't actually do it any other way. The only way to actually identify the victim would be to loop over every unit in the game and see if they're currently the victim of a nuclear attack, and since that flag lasts for a turn it's easily possible to screw up even worse.
Talking about how you'd like the system to be is well and good, but at some point you have to actually try and make a system that WORKS, and the deterministic tactical systems simply don't. Once we get the DLL, that'll change, but until then the probabilistic systems are the only way to do it.