That would be a provisioning nightmare, trying to figure out which partially-used-up box to place a new instance into. Much easier to slice them into fixed sizes.
It definitely would be a nightmare! But they have a big enough pool of hardware and users that it might be possible. As it is, there are inefficiencies because of the lack of choice. For example, I had some large instances because I wanted at least 4 ECUs, and needed 4GB of ram. I had to take on the extra memory even though I didn't need or use it. Now I am using high cpu medium instances, but would gladly pay a little more for an extra gig or two of memory.