It is a bad practice. The end of the method at controller level is not the actual end of the execution of the code related to the request. Codeignitor has a setup of loading a controller and then calling its method, and then executing other code after the method execution has finished.
Apart from the CodeIgnitor internal code, there are hooks
http://ellislab.com/codeigniter/user-guide/general/hooks.html
if you have defined "post controller" hooks, which get executed after the controller method has finished,those will not be executed if you put die
in your code.