No es una cuestión funcional, sino de rendimiento. Cambiar texturas y
shaders es algo costoso para la GPU, así que es mejor hacerlo la menor
cantidad de veces posible. Ordenando las mallas de forma que
reutilices la misma textura varias veces, se intenta evitar este
problema.
No hay un buffer o cache en este caso. Simplemente la GPU tiene
ciertos shaders y texturas activos en todo momento, y cambiarlas
supone unos cuantos ciclos de proceso. No es mucho tiempo, pero si
tienes muchos objetos con materiales distintos esto puede sumar varios
milisegundos por frame.
En cuanto al scenegraph, visitors, etcetera, hay infinitas formas de
hacerlo. Yo nunca he necesitado un scenegraph "tradicional", por
ejemplo, pero tampoco he programado una aplicación con muchos
materiales al mismo tiempo. En tu caso, si tu aplicación es pequeña,
no creo que el scenegraph sea el punto más importante.
Los objetos semitransparentes deben siempre pintarse después de toda
la geometría opaca, y en orden back-to-front.
Aquí lo explican todo detalladamente:
http://www.opengl.org/wiki/Transparency_Sorting