Its a common problem with OGL and one of the 'standard' solutions is as I described... all OGL operations need to be in a single thread, so a complete OGL wrapper is created to do this... it provides wrapper functions for all OGL calls (close to the normal OGL names) or even a more flexible system that allows extensions as well, and queues them all up to be executed in a single thread.
The reason I suggest it as part of SFML is because SFML itself uses OGL, so any third party solution would either need to rewrite some SFML stuff to use the wrapper, or deal with issues of SFML not using the wrapper.
As for complexity and performance... yes it would increase complexity and decrease performance slightly, but it would increase the ease-of-use of the library when users are integrating with OGL themselves.
It would still have problems if people ignored the OGL wrapper as then you would have issues with 2 threads still (especially if the user binds OGL to their own thread, meaning SFML loses itscontrol of the API) but as there can be worse consequences on some peoples machines than just blank screens (I've heard it can do things like corrupt the stack and crash applications and possibly even the computer), it may be worthwhile to investigate possible solutions to the multi-threaded OGL problem. Of course, all these problems may be solved when OGL 3.0 is finally released and implementations appear