When you use == instead of %in%, the comparison vector is recycled. The odd rows are checked against the first element and the even rows are checked against the second element. Look at this example.
library(dplyr)
df <- data.frame(cut = c("A", "A", "B", "C", "B", "C", "A", "B"), index = 1:8)
df
#> cut index
#> 1 A 1
#> 2 A 2
#> 3 B 3
#> 4 C 4
#> 5 B 5
#> 6 C 6
#> 7 A 7
#> 8 B 8
AB <- filter(df, cut == c("A", "B"))
AB
#> cut index
#> 1 A 1
#> 2 A 7
#> 3 B 8
BA <- filter(df, cut == c("B", "A"))
BA
#> cut index
#> 1 A 2
#> 2 B 3
#> 3 B 5
Created on 2019-05-20 by the reprex package (v0.2.1)