I have given two answers: one regarding the hydration of metal cations in solution and one regarding salts of metal cations and their hydration extents.
When in solution, the answer lies with size. Think of a BB gun pellet and a basketball. How many basketballs can you stick to the sides of a BB gun pellet? 2, maximum. That's why some metal cations are hydrated with fewer waters than others; these metal cations tend to be the smaller ones.
Also, it is not $\ce{FeSO4}$ that is hydrated but rather just $\ce{Fe^{2+}}$. Iron sulfate is soluble in water so there shouldn't be unionized iron sulfate in solution; in addition, if the iron sulfate were unionized, it would be hard to coordinate water molecules to the metal cation - it's charge density is diluted, so to speak, by the presence of the doubly negative sulfate anion. So the correct formula should be $\ce{[Fe(OH_{2})_6]^{2+}}$.
When not in solution - i.e about the salt examples you posted: outside of water these salts can coordinate that many water molecules likely because there is no water to hydrolyze the metal-sulfate bond. By having the sulfate part of the molecule stick around, this likely facilitates more hydrogen bonding with water molecules - note that the sulfate anion is polarized by the water molecules; the negative charge density resides overwhelmingly on the oxygen molecules.

Consider the above picture of ferric sulfate. Note that there are four oxygens with partial negative charges on the sulfate ion. At least some of these partial negative charges facilitate hydrogen bonding in the solid-state. Also note the charge on the iron atom; this positive charge density also facilitates hydrogen bonding to water molecules.
In addition, we can consider calcium sulfate dihydrate - gyspum, drywall, sheet rock - the stuff your walls are likely made of. From here we clearly see that two of the oxygens on the sulfate anion are available for association with water molecules. Hence the existence of $\ce{CaSO_4*2H_2O}$
