I think it is important that we don't equate the popularity of decks and their power levels.
One main reason why zoo, hunter and shaman(aggro/midrange) are so popular is that they are cheap, they are easier to play and they tend to have shorter games. It is good for beginners and good for laddering(cthun decks are also decent for beginners since they usually share a lot of minions).
To play dragon/patron warrior, you just need grom and rag(which is used in many other decks). You don't need legendaries to play pirate warrior.
To play yogg/ramp druid, you need fandral, cenarius(the common version also includes rag, yogg, sylvanas).
To play a nzoth deck, you need nzoth, slyvanas, cairne.
To play control paladin, you need tirion, firelord, lightlord, maybe justiscar or other nzoth legendary(depends on what version you play).
To play rogue, you need bloodmage, vancleef, and possibly xaril+nzoth or leeroy.
To play dragon priest, you need sylvanas and several dragon legendaries.
To play these other classes(usually non-aggro), you just have to invest a huge amount of dust that most new players don't have. It is not that I only want to play aggro decks. I simply cannot afford to play the more expensive control decks. When I craft a legendary, I usually choose those that can be used in many decks(rag, sylvanas, yogg) and that means most likely I won't craft the class specific legendaries.
Another factor that limits the popularity of certain classes is difficulty. It may be subjective but IMO rogue and tempo mages are harder to play than many other common classes.