That's a cool idea, I wish I'd thought of that a year ago! I've been soldering a Pico to each prototype pcb and discovering my mistakes the hard way.
Some thoughts from my tinkering with a Pico + RC2014.
I've also settled on the AHC245 as buffers to do level conversion. I tried the LVC245. They also work and have the benefit of being faster but they are more aggressive which creates more bouncing. Early in my experiments I convinced myself this was causing issues with the Pico seeing false events, although I'm no longer convinced that was the case.
If you're willing to deal with surface mount parts, the SN74CBTD3861 and SN74CB3T3245 are both interesting. They're FET bus switches with level shifting. The first is 10 bits wide (handy if you want a couple extra bits). The second is pin compatible with regular '245 parts. They're both bi-directional so no need for a direction pin.
I'm fuzzy on using interrupts, but you may need to deal with the interrupt acknowledge event which would require some extra logic. Depending on which system you're using you may find the serial controller is already using the interrupt line which will complicate matters further.
A second row of pins for each connection may be useful. One row for connecting to the breadboard, and a second row for connecting to a logic analyser or scope.
I found while writing PIO routines to deal with I/O requests it was easier to write one routine to deal with both read and write, e.g.
wait 0 gpio, IORQ
jmp pin do_OUT ; jump based on the RD pin
do_IN: ; z80 IN, Pico write
# do something useful
jmp done
do_OUT: ; z80 OUT, Pico read
# do something useful
done:
wait 1 gpio, IORQ ; wait for the IO request to finish so we don't deal with it twice
This was useful because I could use the same FIFO for both reading and writing. If you wanted to do something similar you could connect the output of the '688 though the spare AHC32 gate as IORQ.
It's worth noting the WAIT pin is typically pulled up with a 10k resistor (I think). This means when you release it, it takes a while to rise back above 2V and for the z80 to continue executing. If I remember correctly, it's something like 10 clock cycles. If you can, it's best to use WAIT as little as possible to avoid the performance penalty or build a slightly dodgy circuit that will pull WAIT back to a high state when you're done with it.
I use the following which seems to work for me, but it may be dodgier than I realise :)
Dylan