1. Vastly superior C SDK, and even the MicroPython support appears to have an edge.
2. Fantastic documentation, even if in PDF form, which makes a bit less accessible for us and especially for LLMs training data crawlers. In general LLMs know a great deal more about ESP stuff than the RP2040.
3. Almost every RP2040 can be overclocked to 400Mhz and work stable, and I could say basically every RP2040 can be stable at 350Mhz, so when comparing performances, account for this.
4. Very smart hardware capabilities: state machines for programmable pins (PIOs), great DMA support, hardware interpolators.
5. High quality hardware, and if you don't need the version with wireless, the cost is still quite reasonable. 3/4 euros/dollars per piece.
6. When you need the "W" one, the wireless chip the Pico uses has its own ARM processor, so you continue to have the two RP2040 cores spare for your application.
7. Memory mapped flash with execute in place. You can read from 0x1000000+offset just deferencing a pointer and that's it, you access your flash.
8. More GPIOs available.
The big disadvantage of the RP2040:
No SPI RAM support. At this point many ESP32 boards have built-in SPI and this makes memory a lot less a scarse resource.
To familiarize with the ESP family is useful since they are everywhere and are extremely cheap for what they offer. But still, I would start basically any new project where I have choice with the RP2040.