Intel's OpenCL drivers provide the GL interoperability flag so I'm assuming that it really wants to provide easy access to OpenGL objects via their OpenCL implementation. However this seems to be slightly bugged.
Everything goes smoothly and without complaints until the texture object is used after calling clEnqueueReleaseGLObjects and clFinish(queue). Opengl throws GL_INVALID_OPERATION when calling glUseProgram. Does your implementation touch anything else than the texture which was accessed via clCreateFromGLBuffer? The code works just fine with ati and nvidia opencl implementations, and we've checked the OpenCL spec quite closely that we are quite likely not doing anything wrong there.