Why is the function named `allCombinations`?  The "all" seems superfluous.  Also, it's actually returning _permutations_ rather than combinations, so the second half isn't really accurate either.  I suggest naming it something else entirely, though: `product`, based on the [function in Python's `itertools` module](https://docs.python.org/3/library/itertools.html#itertools.product) that does something similar.  As for the first parameter, I find `dims` (or `dimensions`) to be more descriptive than `n`.

Why limit yourself to two possible values?  Why not also support a tri-state, for example?  You could make `values` variadic.  As a bonus, you wouldn't have to manually toggle between `value` and `alternativeValue`; you could just use normal iteration tools like `.map`.

    def product[T](dims: Int, values: T*): Seq[Seq[T]] = {
      dims match {
        case 0 => Seq()
        case 1 => values.map(Seq(_))
        case _ => {
          val lesserProduct = product(dims - 1, values:_*)
          values.flatMap(v => lesserProduct.map(_.+:(v)))
        }
      }
    }

Note that the ordering convention is different from yours; i.e. `product(4, false, true)` is equivalent to `allCombinations(4, true, false)`.  I don't consider that to be a drawback.