In the OpenGL spec, the 'count' parameter of glMultiDrawElements is a pointer to an array of offsets if GL_ELEMENT_ARRAY_BUFFER is bound, and a pointer to an array containing index arrays otherwise. The standard glMultiDrawElements methods in LWJGL only accept a PointerBuffer as the count parameter, and memAddress is called on that PointerBuffer, making it not useable for the offsets version of the function (unless there's some way to coerce an IntBuffer into a PointerBuffer?). for the time being nglMultiDrawElements can be used to get around this, but it would be nice to have an overload of the function with an IntBuffer count parameter who's memory address is passed to the unsafe version, it would avoid confusion.
Correct workaround:
nglMultiDrawElements(GL_TRIANGLES, MemoryUtil.memAddress(counts), GL_UNSIGNED_INT, MemoryUtil.memAddress(offsets), offsets.remaining());