I got an answer back from WCH support:
If you configure 8 data bit+1 stop bit, Valid data sampling is conducted at the 8th, 9th, and 10th sampling points.
So it appears their UART is supposed to work in exactly the same way as the STM32 UART.
But this doesn't match my experience. As one can see from the screenshot of the logic analyser capture I posted earlier, it can't possibly be sampling a valid stop bit at that point, because that is overlapping the falling edge of the next frame's start bit, and would result in an invalid frame.

Maybe I got my calculations wrong on the sample periods.

This is 1200 baud, so bit period is 833 µs, and with 16 samples, that makes a sample interval of 52 µs, which is how I have my marker lines spaced on the capture view.
I am going to have to do some more experimenting...
If the transmitting device is really running 7N1, you may have timing issues when it's transmitting back-to-back characters with no gaps, i.e. only 1 stop bit followed immediately by a start bit. While the stop bit should be detected OK, at roughly half way into the bit, the following start bit may sometimes occur too early for the detector.
Yes, it's really 7N1; that's what the software configuration is set to (I say "setting", but it's not actually configurable). From what I have found so far, the transmitting device (a vintage PC-based host) does not transmit characters back-to-back - there is always some gap between frames. I'm not entirely sure whether the length of such gaps may differ between units, depending on the speed of CPU, etc.
You might be able to tweak the baud rate slightly to shift the sample times and effectively get a little more stop-to-start timing margin. See the above datasheet and how the baud rate tolerance is calculated.
Oh, you mean like make it a few percent faster, so that the sample points within each bit are sooner? I do have a fractional baud rate generator on this UART, so I can make it whatever I like.
I would not mess with it. Transmit a full size stop bit.
I can't control what the transmitting side does - it is what it is. It does transmit a full-size stop bit,
at 7N1. But I my UART doesn't support 7-bit data (only 8 ), so I'm trying to do what I can.