Because as anyone in the industry knows, the portability of APIs like OpenGL only happens in theory.
To expose the hardware features that makes the game shine and stand out over others, one needs to make use OpenGL extensions.
A different set of calls for each card model, manufacturer and game consoles if they expose an OpenGL wrapper API.
Then there are the workarounds for the API calls that are supposed to be part of portable OpenGL, but then again behave differently across graphics hardware and drivers, leading to additional code paths.
The shading language features are also different across OpenGL versions and graphic drivers.
Finally OpenGL and OpenGL ES are common just in the name and a few overlapping APIs, leading to rewrites between desktop and mobile platforms.
In the end, the development effort of writing "portable" OpenGL, while taking advantage of vendor extensions and working around bugs is bigger than use exposing an common abstraction layer on the games engine that takes advantage of each native API without piles of workarounds.