If you pass Orange directly into .x. or .y, walk2 will iterate over the variables, not the groups. To do that, split the data into a list. The names of the list elements will be the levels of whatever you split on, so they'll make nice titles:
library(purrr)
par(mfrow = c(2, 3))
Orange %>%
split(.$Tree) %>%
.[order(names(.))] %>%
walk2(paste('Tree', names(.)),
~plot(circumference ~ age, data = .x, type = "l", main = .y))

This particular usage effectively rebuilds iwalk, with which you could write
Orange %>%
split(.$Tree) %>%
.[order(names(.))] %>%
iwalk(~plot(circumference ~ age, data = .x, type = "l", main = paste('Tree', .y)))
which returns the same thing.