Using a second processor to extend the capabilities of the first is hardly novel; that's pretty much what the i2c bus was designed for in the first place, so I can't claim any great originality. However, the peripheral mix on the PIC means that this combination can provide a lot of flexibility with very little in the way of additional components.
I gave up programming the ESP with straight C a few months back, when I discovered that using the Arduino-ESP core meant that you didn't have to do anything special to have the application fit into memory and that you no longer had to fight with the SDK every time Espressive pushed out an "update". I've since moved on to PlatformIO, as I've always been a CLI, rather than a GUI kinda' guy (and I thoroughly recommend it).
My language of choice on the PIC would probably be C ...if the Microchip stuff wasn't just so damn difficult to use. I really don't want to spend three days bouncing back and forth between on-line manual pages and forum postings just trying to find out how to get a simple lib #include to work. The Microchip MPlabXpress IDE looks great, but same problem ...where is the i2c library file and how do I include it (oh, and how on earth do I access the shared programs which other people have written? Did everyone else give up in frustration, too?). The CSS C compiler was okay while it lasted, but I can't afford to pay their prices for hobby use. So I go back to using JAL2 and the excellent JALLIB support libraries.
JAL2 is very much like a simplified subset of C, but lacking pointers. There are libraries available for almost anything you care to mention in the JALLIB package and there's a metric ton of example code for different PIC variants included too. I've used the JALLIB i2c libraries to get multiple PIC processors talking to each other before, so using it again for the PIC slave sideof this project seems like a reasonable choice.