有 + [adjective] + 有 + [opposite adjective]
有 + [verb] + 有 + [verb]
有 + [noun] + 有 + [noun]
有…有… puts 有 "have, there is" before each of two words. With opposites it describes a mixed group; with related words it says something is complete or lively.
Two opposite adjectives or nouns say a group contains both kinds.
Two verbs that go together describe a lively scene: both things happening at once.
A small set of fixed phrases says something has everything it should: 有头有尾 "a beginning and an end", 有声有色 "vivid", 有血有肉 "true to life".
又…又… gives two qualities of one thing. 有…有… gives two kinds within a group, so the adjectives are opposites.