It's fairly easy to see the differences in behaviour with a simple test case. This is what Chrome outputs from the console:
var test = ['a','b','c']
test[1] = null
["a", null, "c"]
var test = ['a','b','c']
test.splice(1, 1)
["a", "c"]
var test = ['a','b','c']
delete test[1]
["a", undefined × 1, "c"]
As you can see, splice is the only one to change the index of c
from 2 to 1.
Which one you want to use depends on your use case. There may be a case where you have a fixed-length array, and you want to remove an item without affecting the index of items after it, in which case splicing would be inappropriate.