sprite_set_live
is mostly just a sprite_replace
call so it’s not very smart when it comes to less-common features and even less smart when it comes to things you can’t do in GML (like different times per frame).
For a workaround, could save your original sprite_get_nineslice(spr)
and sprite_set_nineslice
it when sprite_get_nineslice(spr).enabled == false
.