You could solve your problem by using flatMap which will concatenate (flatten) the Lists for you.
def combine( head : (Char,Int), xs : Occurrences) : List[Occurrences] =
xs.flatMap { case (x,i) => (1 to head._2).map(occu =>List((x,i), (head._1, occu))) }
Now for each occurance it'll produce a list that has the (x,i)
tuple and the (head._1, occu)
tuple and all of the lists will essentially be ++
'd together by the flatMap.
Note that I'm blindly converting your code since I know this is homework so I won't attempt to analyze if the algorithm is correct.