I found the issue. After checking all of the hardware extensively I finally concluded that Pin 9 was not going low, but instead going to a high impedance state, and the Enable 2 pin on the L293D just floats at around 2 volts on its own.
digitalWrite on an input pin will enable the internal pullup, which is why I could see the pin still going HIGH as expected.
I looked through the code and did not find any errors. Pin 9 was being set as an output using the pinMode function, it just wasn't changing the bit in the register. I decided to print the DDRB register to the serial monitor before and after the calling pinMode and determined that the function wasn't working for DDRB. Curiously, it was setting the bit for Pin 13 as expected. I am using VS Code and PlatformIO to write the code, so maybe there's some issue within that framework.
The solution was to set the DDRB register directly. After doing that all is working as intended. I haven't dug any further into figuring out why pinMode is not working.