That's an interesting idea. I appreciate that my solution uses an apparently unreasonable number of GPIO pins (4). I considered a 3-pin solution with a bidirectional data link, but concluded that the impact on speed would be too great. My own intended application is to use an ESP8266 as a means of bringing MQTT to the Pyboard. The latter has plenty of I/O so the fact that it monopolises 4 pins on the ESP is of little consequence.
The design intentionally avoids timing dependence, which a one-wire solution cannot. This is for portability: it's supposed to run on any MicroPython hardware regardless of speed.
For asynchronous programming it's important to avoid blocking reads - which is why I didn't use I2C or SPI slave mode. A one-wire implementation would need a way for the slave respond promptly to a state change initiated by the master. This would involve interrupts, introducing some hardware dependence. And, as you say, one-wire removes the full duplex capability. It also introduces master/slave asymmetry whereas my design is symmetrical.
In my application full duplex and symmetry are crucial as either end can send unsolicited messages at any time. So I have no plans for a one wire implementation, but if you feel inclined do feel free