Having read the library (not sure if it was the Adafruit one; there are others) I think it is possible. It's pretty much bitbanging without the use of interrupts or an external clock signal. I didn't see anything that makes me believe it can't be done, even though I've never seen a library for it.
The main problem may be slowness of reading the port expander's pins as you have to do that over I2C. So you have to study it's data sheet to see reaction times. Maybe other port expanders, like the newer but also more expensive MCP23008, can give better results.