These days I would use tidytext::unnest_tokens for this task:
library(tidytext)
df2 %>%
unnest_tokens(model, models, token = "regex", pattern = ",")
# A tibble: 10 x 2
brand model
1 a a1
2 a a2
3 a a3
4 b b1
5 b b2
6 c c1
7 d d1
8 d d2
9 d d3
10 d d4