I solved the issue using NSRunLoopCommonModes.
I was using the timer to update the content of a view. It changed an ivar and then set the needsDisplay attribute. Unfortunately, the needsDisplay attribute seems to only used by the mainRunLoop. During a live resize, it is never checked. My view content would only redraw when the frame of the view changed; if I just held the resize-corner in one place, it would never update.
I changed the timer to instead call display rather than setNeedsDisplay, which forces a redraw without waiting to return to the runloop.