when a file is deleted, watch detects it but never fires any tasks.
This is a grunt bug.
I read the implementation on grunt/master and the fact delete doesn't trigger tasks makes sense, because it re-expands the watch paths and looks for a match before running tasks. If the deleted file was expanded from a glob, the re-expansion will miss it.
However, it looks like this piece was totally replaced in the devel branch of grunt. Putting this on hold for now.