I don't get why you wouldn't want to implement it in the main MCU itself. It's the most flexible solution to implement the exact type of USB device you want. STM32F4 series do support USB, they require an external USB PHY though, but these are very cheap. The PHY just handles the low-level physical interface, the whole protocol controller is on the MCU. ST provides examples for implementing USB devices, you can also use a third-party lib like TinyUSB.
There are of course many other MCUs with an embedded USB controller, many with the PHY integrated as well. (Note that I'm not sure what *you* mean by USB PHY here - it sounds as though you actually mean a USB controller. The PHY is the low-level interface part. A PHY itself is not a USB controller and doesn't do anything useful on its own.)
There's a lot of stuff as far as USB bridges go, beyond USB-UART, if you're looking for that. Just have a look at FTDI's offering, it's rather large with devices implementing HID, or the classic parallel FIFO ones (FT245/FT232H/FT2232H/etc...). There are other vendors with similar solutions too. Be aware that this external "bridge" approach won't allow you to customize the USB interfaces in any way, apart from changing the USB VID/PID and a few other options. But you'll be stuck with whatever interfaces they provide (a vendor class using bulk transfers for the FTDI parallel FIFOs, a HID class for their HID devices, etc.)
So for flexibility, the easiest path it to use a MCU with a USB controller and use that. As I said, the STM32F4 series that you use actually have a USB controller, they just require an external PHY, the controller is still on the MCU.
Examples of such USB PHYs are the USB33xx series (Microchip). Easily available, cheap.