I believe the problem is that the example code only calls glSetCurrentContextPPAPI in DemoInstance::InitGL. If I call glSetCurrentContextPPAPI in each of the Paint calls, the cube spins in each of the two plugin instances. I'm testing on Ubuntu as well, but suspect this would behave similarly across platforms.
Since the two instances are sharing a process, the g_current_context value in src/ppapi/lib/gl/gles2/gl2ext_ppapi.c is likely staying with whatever plugin's DemoInstance::InitGL finishes last, hence the other one never updates. Note that it's non-deterministic/racy - without my fix, if I reload the page sometimes the first cube spins, sometimes the second.