Ah, I found the issue after more carefully reading the documentation.
I was using FMOD_CREATECOMPRESSEDSAMPLE, so correct me if I’m wrong, but it seems like since the data of compressed files like mp3 and ogg was left compressed in FMOD’s buffers, there is no way for FMOD to then give you interpreted PCM data since it decompresses it on the fly?
After switching to FMOD_CREATESAMPLE, (I also switched from open memory point → open memory) the PCM Read callback is now firing and giving the expected data.