I think the 5v shift register is probably the best option for you.
I'm not 100% sure why it works on Espruino, but it may be that the Espruino has a much wider output voltage range (very close to 0-3.3v). If you measure the output voltage from the 74HC595 you may find that it is only 2.7v or so.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
I think the 5v shift register is probably the best option for you.
I'm not 100% sure why it works on Espruino, but it may be that the Espruino has a much wider output voltage range (very close to 0-3.3v). If you measure the output voltage from the 74HC595 you may find that it is only 2.7v or so.