The "height" in the PokéDex does not alway refer to a Pokémon's height. I'm sure you've heard of the Furret meme:
If the PokéDex went purely based on height, then Furret is a humungous 6-foot-monster rodent. However, in Furret's case, this 5'11" refers to its length. This applies to other serpentine Pokémon like Arbok, Seviper, Serperior, and Huntail. Because Lucario is humanoid, 3'11" is his actual height. This applies to other Pokémon like Blaziken and Machoke.
In the case of Stunfisk, he's flat because he's 2'4" long, not 2'4" tall.
Source: Have wondered this myself about different Pokémon.