You need a default value in case one of the lists has fewer than 3 elements.
Also, you need to define what you mean by "add" since you have strings. you could get a list or concatenate them in a string.
You want to do this by key so you map the values. You then drop 2 items for each list to get the optional third (None if the list has fewer than 3 items, Some(x) otherwise). Since we flatMap, we get a list of all the "third items" and we can concatenate them or anything else.
val map = Map("a" -> List(List("a", "b", "c", "d"), List("a", "b"), List("x", "y", "z")))
map.mapValues(_.flatMap(_.drop(2).headOption)) // returns "a" -> List("c", "z")
map.mapValues(_.flatMap(_.drop(2).headOption).mkString) // returns "a" -> "cz"
Here is a slightly more generic version in which you can fold over the nth items of a map of list of lists. It's not the most generic you could get, but you get the idea
def foldNth[A, R](xs: Traversable[Traversable[A]], n: Int, z: R)(add: (R, A) => R) =
xs.flatMap(_.drop(n).headOption).foldLeft(z)(add)
map.mapValues(foldNth(_, 2, Vector[String]())(_ :+ _)) // concatenates them in a vector
map.mapValues(foldNth(_, 2, "")(_ + _)) // concatenates them in a string