Es una función sensata en OpenGL ES, donde dichos objetos son referenciados por enteros sin signo. Pero WebGL es un enlace de JavaScript y es por referencia directa al objeto: gl.createShader devuelve un WebGLShader (o nulo). Una vez que todas las referencias de JS dejen de existir, p. ya no está en el alcance después de la configuración del programa de sombreado, y el programa de sombreado ya no existe, puede ser recolectado como basura, ya que no hay forma de acceder a él o usarlo nuevamente.
Entonces, gl.deleteShader es un noop en WebGL y, de ser así, ¿por qué se adoptó para WebGL? ¿Cuáles son sus usos prácticos? ¿Vale la pena ejecutarlo después de vincular el programa, para liberar recursos antes?