It's a bit of a personal choice. For me, if I needed to do something repeatedly (say, for example, importing a CSV file) I would put that into a helper or library so I could use it from multiple controllers. If however, what I was facing was an organizational issue (say, an admin area of a website) I would use subfolders to keep things organized (instead of just putting all my functions into one controller).
Controllers are just a way to organize your code. They translate into routes. Once you get your head around that, you can pretty much do what feels best (of course, if you are handing your code off to someone else, you have to be merciful to them too!).
Author, Professional CodeIgniter