I would use the ActionStack Action Helper to stack a call to the user controller. Stacking means, when you're done with this current action, let's call a new one before going to layout rendering.
This User controller would then be able to decide (based on Auth stored in registry) which content it should produce/take from cache). And this user controller action would use $this->_helper->viewRenderer->setResponseSegment('myusersidebar');
to let the main Zend_Layout simply call <?= $this->myusersidebar ?>
to echo the block.
So this not a controller plugin (except Action Stack is a controller plugin), not a controller predispatch, but simply the way of looping in Zend MVC stack by stacking several actions and rendering the layout at the end.
The action stacking is in fact related to layout composition and should be avoided for special requests (like ajax requests, they certainly do not need your user block). So you can either decide to do delay this process of stacking layout blocks on each Actions (and avoid stacking it for ajax actions), or add some code to remove the actions you want to stack when the Ajax Context loads (like the way Zend_Layout is disabled in AjaxContext).
The problem with a 'simple' predispatch treatment is that you may execute code to prepare your html block for requests that won't need this block (ajax requests, pdf requests, etc).