It's not only taste imho, code duplication is bad for maintainability.
An alternative impl of shouldStash could be:

def shouldStash(sm: SystemMessage): Boolean =
  (state: @switch) match {
    case `DefaultState` => false
    case `SuspendedState` => sm.isInstanceOf[StashWhenSuspendedState]
    case `SuspendedWaitForChildrenState` => sm.isInstanceOf[StashWhenSuspendedWaitForChildrenState]
  }