It's always a best practice to move the complete business logic in Lightning Components to a helper file and have the controller.js file just as a messenger.

There is a reason for that.

When a component is used (or embedded) multiple times in another component or when it's embedded multiple times in any of the lightning entities (Lightning Pages, Lightning Record Pages etc) then the helper.js file of the component(though embedded multiple times) is loaded only once which in-turn will be shared by the components.

So the resources used to load the same file multiple times is saved and response time can be reduced by a fraction of a second.

It basically enhances the user experience(UX).

Hope this is helpful!