I'm not sure the match statement buys us anything over

  val newsize = ks1.size
  if (newsize == this.ks.size) ...

except variation in style between HashSet1 and HashSetCollision1.  In particular, the repeated "size if size" motif seems a little boilerplatey.