[eluser]Aken[/eluser]
A quick, easy work-around is to use a MY_Controller base controller, and define a method for generating the 404. I'd name it something like _throw_404() to avoid any name collisions, and make it protected. Take your current custom 404 controller's code and transfer it to this method.
Then, have your original error controller A) extend MY_Controller, and B) call the new $this->_throw_404() method.
Also, any other controllers where you wish to throw a 404 error using show_404(), you'd do those steps instead - extend MY_Controller and call $this->_throw_404();