There is no rule that dictates how you must organize your code.
However here is what i consider "best practice":
As far as possible, one controller should 'map' to one page.
So 'user page' should have a 'user controller', 'sign in page' a 'sign in controller', 'registration page' a 'registration controller', and so on...
Nothing is stopping us from using one single php files with 10,000 lines for our program, but i think most would agree that the problem with doing that is that maintaining such a code base which be a nightmare.
When you later decide to change the registration page like add a new field, do you want to have to look at a file that contains the user and sign in code logic that you aren't interested in or a file with only what you are concerned with?
What if you had to tell another developer to do it? image this... "help me add a field to the registration form, you will need to look in the user controller and scroll down to the 3 function that is the registration form logic" vs. "help me add a field to the registration form, just look at the registration controller"
I leave you with a quote by Martin Golding
Always code as if the guy who ends up maintaining your code will be a violent psychopath