To follow up on this, I got a resonse on my bug report to Apple. This is the response:
"As long as you don't cause any display updates the screen stays in low power and therefore 30hz mode, which in turn also keeps the event input stream down at 30 hz. A workaround is to actually cause a display update on each received move, even if it is just a one pixel move of a view if input is needed while no explicit screen update will be triggered."
In my application, using a GLKView, I set its preferredFramesPerSecond to 60. Occasionally, my input rate would randomly drop to 30hz. The response from Apple doesn't fully explain why this would happen, but apparently the expected method of handling this is to call display() directly from touchesMoved() while dragging.
I've subclassed GLKView and I set preferredFramesPerSecond to 60. On touchesBegan(), I set isPaused=true, and start calling display() within touchesMoved(). On touchesEnd(), I set isPaused=false. Doing this, I'm no longer having any issues - the app is more performant than it's ever been.
Apple's example TouchCanvas.xcodeproj does all drawing from within touchesMoved() as well, so I guess this is the intended way to handle this.