in general a port with mos "totem output" is able to sink more current than sourcing.
With these colors the Vf is very high, near 2.8 -> 3.5v and you must have the highest voltage available to drive them correctly. a red or standard green (570nm) have a lower Vf, near 1.6 -> 2v
You modify these characteristics mainly by changing the dopant levels and mosfet channel geometries [length vs width], so apparently current manufacturing practices make the channels essentially equivalent - by trading off dopant and drive levels against geometry.This is also true. So, if you're running Vcc=3.3V, you need to use "sinking" mode, and tie the anode side of the Leds to +5V, not 3.3V, and the cathode side to the I/O pin. IE, you cannot effectively source current into an Led having Vf=3.5V from a 3.3V I/O pin.
it's better to connect the anode to the +3.3V with a low resistor because if you connect it to the 5v a little current flow thru the 5v -> the led and the port clamp diode / high side mos -> to the 3.3V 5-3.3v = 1.7 -> enough to light a red led or even a white one with low current.so it's better to use gates or transistor as level shifters to control the led in that case.
2. I don't know about white Leds, but the hi-brightness green and blue have Vf=3.5V or so, and with Vanode=5V and the cathode to a Vcc=3.3V I/O pin thru series-R, they are not turned on. IOW, 5-3.3V = 1.7V will not turn on these Leds.