Curves aren't really guarantees, so I pulled up my datasheet for Fairchild/ON Semi 3904s, which claims the dc current gain at 10mA and 1.0V Vce is at least 100. ON doesn't mention gain bins, so I'll go with the worst case of 100. 3.3 - 0.65 - 0.05V of fudge for rounding = 2.6V / 10k = 260µA * 100 = 26mA Ic. With a 10mA load, you could double the base resistor, if you really wanted to, and if you aren't one of those people who keeps a reel of 10k resistors around in case of emergency like I do, and you don't want to leave margin for later adjustment.
Personally, I'd use a MOSFET. Curves aren't really guarantees, but with a small, common MOSFET like the 2N7002, typically you could pass up to (approximately) 60mA at 25°C with essentially zero static gate current. According to
some random bloke on Stack Exchange, pi GPIO output current should be limited to no more than 16mA instantaneous current per pin, so 3.3 / 0.016 = 206 ohms gate resistance, in isolation. However, total GPIO output current should also be limited to no more than 50mA in total, including your optoisolators and everything else, so, just in case you switch all those LEDs on or off at once, I'd limit all the gate/GPIO currents to 1mA peak by placing 3.3k resistors in series with all those gates. The 165ns RC time constant is negligible in the case of visual LEDs.