Why bacteria and viruses are so much smaller than animal cells?
Cells/viruses vary in size mainly according to their function, components &amp; requirements imposed by cell division/virus replication.

Bacterial cells are so small because they need a large surface area to cell volume to take in nutrients. Bacteria accumulate nutrients from the environment by diffusion alone, and so adopt certain sizes and shapes so they can import nutrients most efficiently. other evolutionary advantages are also existent in response to the demands of the environment and predators

Viruses function is pretty minimalistic. they pretty much consists of nucleic acid surrounded by a protective coat of protein called a capsid. this is the primitive virus, all it nedds is to infect cells and pass the information stored inside them.

The size of animal cells however depends partially on the type of cell and its function. Red blood cells are pretty small in comparison to other animal cells, they don't need to divide (so do not own a nucleus) and need a large surface area in order to diffuse Oxygen efficiently. Egg cells for example serve to store nutrients and don't need to carry out active metabolism, and so they are much bigger.

I took some of the examples from here, and for more technical information about the upper limits of cell size and plant cells click here.