Just came across this bug, the other thread with the same title is marked as closed but in fact it isn’t. A little trial and error and i figured this out:
If the script calling the playOneShot command is on a DIFFERENT gameobject than the AudioSource, it will only trigger once.
The script calling the audiosource.playOneShot needs to be on the SAME gameobject, this fixes the bug.
Hope this saves some people headache.