It seems the problem is in the file name, since combn returns a list for each combination which causes paste to vectorize over it.
For example, the first element in the list created by combn is [1] "apple" "pear" so paste will create this:
paste("test", combn(fruits, 2, simplify=FALSE)[[1]], ".html")
[1] "test apple .html" "test pear .html"
You can collapse the elements into each other and create the filenames that way, which you can see below:
library(rmarkdown)
fruits = c("apple", "pear", "orange")
purrr::map(combn(fruits, 2, simplify=FALSE),
~ render(input="params.Rmd",
output_file = paste0( paste0(.x, collapse = "_"), ".html"), # File name as fruit combination
params=list(compareFruits=.x)))