glMultiDrawArraysIndirect does not work when specifying an offset
The problem was my class handling the population fo the draw indirect commands.

Each time I added a new command to the indirect buffer I also incremented the baseInstance, so the cube had baseInstance = 0 and the sphere had baseInstance = 1.

The reason why it doesn't render the sphere is because glMultiDrawArraysIndirect pretty much evaluates as glDrawArraysInstancedBaseInstance(mode,  cmd-&gt;first,  cmd-&gt;count,  cmd-&gt;instanceCount, cmd-&gt;baseInstance); (as per the OGL wiki).

The drawID is calculated as (gl_InstanceID / divisor) +baseInstance (link), which means that the drawID is out of range when trying to render with an offset, as the sphere now appears as the first element in the indirect buffer.