As stated in store, filter method documentation
Alternatively, if filters are configured with an id, then existing filters store may be replaced by new filters having the same id.
But when you look at filter method source code you can see
Code:
me.snapshot = me.snapshot || me.data.clone();
me.data = me.data.filter(me.filters.items);
With this code if i have a filter for example with id "x" and filter store with this, then filter store again with another filter with id "x", new filter with id "x" replace with previous filter in "filters" attribute of the store, but result of filter would be join of new "x" and previous "x" filter.
Developers expect that replacing occur in result too.