Should I be setting explicit height and widths for images on each breakpoint?

Exactly. For the purposes of images, I often use px in this situation, but rems are a better way to go overall in your layout. The main thing is it needs to be fixed so that the browser can perform its layout before the image asset is loaded and examined.

That makes sense to me, depending on exactly how it was setup, because if you specify one image dimension explicitly, but let the other dimension be governed by the container, you’ve basically told the browser to ignore the image’s internal aspect ratio. I’d have to test this out to find the right configuration for what you’re trying to do.

For me I usually take the easy route of using a DIV with a background image set to centered, cover. That will trim the edges, but ensures the entire space is covered by that image, and usually that’s the effect I want.

Read up on object-fit as well, it offers many of these same background-image layout capabilities directly in an image element, and as a bonus you’ll get the media srcset optimization for mobile devices.