Se vuoi fare una cosa fatta bene, semplice da programmare ed eventualmente da modificare, la cosa migliore e` che le varie "celle" (o "quadrati") siano dei blocchi. Poi alla fine le celle saranno invisibili: servono solo per sistemare gli spazi destinati ad ogni immagine. Tali celle possono avere dimensione 30%, ed anche avere una dimensione minima (di modo che se poi sono troppo piccole, ce ne staranno due in una riga invece di tre, ma il tutto resta ragionevolmente formattato).

Non capisco come puoi inserire le immagini con JS (significa lato client?), comunque anche con JS puoi determinare quale dimensione e` maggiore dell'altra, ed applicare la classe corrispondente.