Why is there a buffer before an SD socket?
SparkFun's CAN bus shield is designed such that it can be used with Arduino.
The SPI logic-level on Arduino is 5V and microSD card works at 3V3. 74HC4050 acts as a logic-level converter. 

You can convert the logic-level by pass transistors but that would be slow if you demand speed on SPI Lines. (SPI CLK and DATA lines can go up to MHz range; hence transistors need to switch faster)