It's a sensible function in OpenGL ES, where such objects are referenced by unsigned integers. But WebGL is a JavaScript binding and it's by direct object reference: gl.createShader returns a WebGLShader (or null). Once all JS references for it cease to exist, eg. no longer in scope after the shader program setup, and the shader program is no more, it can be garbage collected, as there's no way to ever access or use it again.
So is gl.deleteShader a noop in WebGL, and if so, why was it ever adopted for WebGL? What are its practical uses? Is it worth executing it after linking the program, to free up resources earlier?