I see three key factors at play here:

1. Responsive design

2. Not designing with real content

3. Not giving a shit about the text

Responsive Design

If you’re overlaying text on top of imagery, it’s difficult to get it to work across a range of screen sizes. There’s a delicate balance between clear-space in the image and line-length in the text. Trying to figure it out with static visuals can be impossible.

Prototype it.

It doesn’t need to be production code. It doesn’t need to work on different browsers. A basic, rough-as-hell mockup will quickly show you what will or won’t work across different sizes.

Design with real content

Making a design work using optimal images is relatively easy. If you’re dealing with user-generated or dynamic content, you need to plan for worst case scenario images. If you’re overlaying white text on an image, expect that someone might use a predominantly white image.

Airbnb

Give a shit about the text

Visual design is about communication — combining text and imagery to deliver a message or tell a story. Choosing a beautiful photo and treating the text as an inconvenience — something stuck on top with no regard for whether people can read it — is bad communication and it’s not really design.