ddtar works fine for scaring off snorlax in a pinch, but you don't want it to be your only good switchin to curselax, for exactly the reason you mentioned.
beating snorlax early/midgame and beating lax as a last pokemon is like dealing with two separate threats. skarmory doesn't really beat snorlax because when snorlax is the last pokemon, skarmory cannot roar it out anymore and curse eventually beats it. last pokemon curselax can beat celebi too unless you have perish song or you land leech seed and start calm minding up before it gets too many curses in.
forcing snorlax to rest is a good way to handle it, so things like toxic, leech seed, and roar+spikes are good ways to help deal with it in the midgame.
since curselax is either going to have shadow ball or earthquake, jirachi, tyranitar, and metagross handle shadow ball lax, and gengar can handle eq lax with an appropriate moveset (perish song, taunt+wisp, hypnosis, focus punch, and explosion are all good choices, depending on the type of team you're using). however, not every jirachi/ttar/metagross set is effective at handling curselax in particular. superachi has trouble coming in on snorlax multiple times per game and you don't want it to get paralyzed, but a wishing calm mind set will destroy shadow ball snorlax and not give a shit about para or the light damage really. pretty much only cbtar/ddtar/subpunch tar are scaring snorlax because unboosted rock slide only does 36% or something like that, and barely does anything significant after a curse. mixtar (rock slide/hp grass/fire blast/pursuit) is a shit curselax counter. as for metagross, some snorlax will not be scared off by unboosted meteor mashes, so unless you're prepared to explode or you want to bank on lucky attack boosts with meteor mash, you might need a choice band if you need a truly reliable lax counter.
it's also effective to deal with snorlax like you would with suicune: force it to rest and then send out something like cb heracross to kill it or force it out before it wakes up. even something like cbmence can be effective provided you DON'T let it curse more than ONCE before it goes to sleep, and you can predict the rest and get cbmence in on THAT TURN, but that's not a particularly reliable strategy.
make it rest, and never give it a chance to set up. curselax is one of the reasons your teams should almost always have a phazer. if you want to use ddtar, you should have a metagross or a skarmory or something that you can send into curselax and force it out for the majority of the game until ddtar is ready to sweep. ddtar is best hidden until the lategame anyway, and it will benefit from spikes/metagross exploding on water types.
so in short, here are the effective ways to deal with curselax early to midgame (and this all depends on its moveset, of course):
skarmory, roarcune, metagross, cbtar/subpunch tar, defensive calm mind jirachi, gengar, plenty of leech seed, toxic, and/or will-o-wisps, spikes, etc. anything that will force it to switch or rest. sandstream certainly helps too, as it makes lax less reliable as a wall.
and as for late game/last pokemon curselax:
perish song, explosion, defensive cm celebi, defensive calm mind jirachi, metagross, subpunch/cb/dd tyranitar, taunt gengar, cb heracross, medicham, etc.
weezing sucks. and whenever you see curselax, be wary of dugtrio/magneton/pursuit trappers like houndoom or tyranitar.