Wait, what? That's the first I've heard about it; what's the problem with doing it in ReleaseDC()? Or even, how can it be a problem to not reset the pixel format for a DC we're about to destroy?
ReleaseDC does not destroy the DC, it adds it back to some cache which has some complicated logic I don't really want to mess with. The issue then comes from the internal OpenGL surfaces, when they are owned by window DCs, as their creation / destruction might require other GDI calls involving all sorts of convoluted locking.
It was not a problem until the recent refactoring to move OpenGL surface management out of the display drivers, and also ReleaseDC didn't cause any problem because it simply never had to do anything like this.
Now, we need to support multiple OpenGL surfaces alive because of wined3d requirements, we have a Wine-specific extension for that, I think tweaking that extension to make wined3d / win32u cooperation more explicit should be alright?