The difference in its usage:
Filter:
$(selector).filter(selector/function)
Grep:
$.grep(array,function,invert)
So in your case I would rather use grep() because using array this way is unnecessary: $(arr).
I also suppose that grep function is faster, because it only accepts arrays.