Buffering is the job of SGW application. However it can vary due to different implementations. Each vendor can have different design to implement such as Cisco SGW, Juniper SGW, Aricent SGW etc. Even though all these vendors follow 3GPP defined interface and concepts but their design can be different.
Now coming to your question where SGW does buffering. Answer is SGW S1-U application which is responsible for delivering the incoming GTP-U packets to eNodeB via eNodeB S1-U tunnel end point. If eNodeB side tunnel end point is not available then S1-U application of SGW node sends indication MME.
It is completely implementation depend and depends on the current architecture of your node. While designing all the things are considered.