I don't think adding additional state to track makes things simpler. The only reason why nested ifs are necessary now is because there is no other way short of writing out a chain of else ifs to realize a table of possible scenarios and what to do in each. If you write the possibilities down in a table you will notice there aren't really that many, they just all need to be accounted for, and the current fix takes care of a case in the table that wasn't. It was simply an oversight by the implementer of the optimization, but I don't think that the fix makes the code any more complex than it was without it.
Also, your test scenario is unrealistic. Even the latest AAA games tend to keep their total draw calls in the low 1000s. With 50k draw calls you are making the API call overhead look worse than it would actually be in a real world scenario. Sure the driver might internally batch them together somehow, but every optimization has its limits.
When people say "minimize state changes" in regards to OpenGL, what some might tend to forget is that they are referring to pipeline state changes e.g. texture binding, buffer bindings, program bindings etc. All these gl*Pointer calls are modifying client i.e. CPU state. The GPU never sees any of this stuff. For all we know, calling glVertexPointer might just be a simple write to some memory address, which would mean the same overhead as any other call into an external library e.g. operator new. We mustn't forget that SFML is still running around legacy-land, so the whole premise that we are trying to optimize something that is by nature sub-optimal is already a bit absurd.
We need real world performance metrics to see if an optimization is worth it. It is easy to construct an example that is designed to put concentrated stress on to some aspect of a system, be it the driver itself or in our case SFML as a library. The possibility that people can use/do something wrong shouldn't make an optimization necessary. That's essentially what driver developers have been stuck doing the last 20 years, making up for crappy/hastily tossed together game code, which is why Vulkan/DX12 is going to make a big difference. For the first time in a long time, the fault will be solely on the side of the developers if their code runs horribly. They will have to optimize their own code first before putting the blame on the GPU vendors. The same should apply in our case. Only once the user has exhausted their optimization possibilities should the library be forced to go out of its way to lend a helping hand.