I am a part-time consultant for this client, so lots of things happen when I'm not aware. It turns out that the client decided to "virtualize" my server. No problem, it's likely to make it safer. But they didn't talk to me about it until they had spun up the VM and copied over my entire server, then fired it up! As a result, the new server began running SQL Agent jobs alongside the old server.
When the evening backups ran, the filename included the time down to the second. By contrast, the noon backup only had a filename that included the time down to the minute. So, when one of the servers created a backup file seconds before the other one, the late-comer would find a duplicate file name, and an open one at that! Thus, it would fail. Every day....
The client called me yesterday and asked that I test the new server so they could continue the process, and it was the first time I'd heard of it. I checked the email and found that it had come from the new server, not the old one. Eureka!
Thanks for listening. Sorry for the confusion.