Ответ 1
Основное отличие состоит в том, что вы не можете создать перечисление без случаев. Поэтому, если вы просто ищете что-то, чтобы служить пространством имен для некоторых статических членов, перечисление предпочтительнее, так как вы не можете случайно создать экземпляр.
let e = StaticEnum() // error: 'StaticEnum' cannot be constructed because it has no accessible initializers
let s = StaticStruct() // Useless, but legal