Все списки имеют одинаковую длину, и всегда третий элемент является расходящимся.
Тогда используйте кортеж, это будет лучше моделировать ваши данные, это сохранит тип информация и было бы проще сделать комбинацию.
def merge[A, B, C, D](t1: (A, B, C, D), t2: (A, B, C, D)): Option[(A, B, (C, C), D)] =
t1 match {
case (a, b, c1, d) =>
t2 match {
case (`a`, `b`, c2, `d`) => Some((a, b, (c1, c2), d))
case _ => None // The other elements not where equal.
}
}