I'm going to take away the sum() and then the tidyverse trappings to try to see what this looks like "under-the-hood" to %in%. The summary point here being that list(c(1, 2, 3)) %in% c(2, 3) returns FALSE, while numeric vector inside that list returns the results for the individual components.
Not sure if this clears things up, but I find it helpful to break things down a bit.
library(tidyverse)
tibble(x = list(c(1, 2, 3))) %>%
mutate(matches = x %in% c(2, 3))
#> # A tibble: 1 x 2
#> x matches
#> <list> <lgl>
#> 1 <dbl [3]> FALSE
list(c(1, 2, 3)) %in% c(2, 3)
#> [1] FALSE
x <- list(c(1, 2, 3))
x %in% c(2, 3)
#> [1] FALSE
y <- x[[1]]
class(x)
#> [1] "list"
class(y)
#> [1] "numeric"
y %in% c(2, 3)
#> [1] FALSE TRUE TRUE
Created on 2019-10-08 by the reprex package (v0.3.0)