I agree with you that it is a pain depending on your requirements. It's been like that for as long as I can remember. This happens until the student is enrolled in at least one course. Once they are, the all courses list goes away and all they see is whatever you selected in the Front Page settings.
Some Potential Solutions
Here are some options to help you get rid of the default All Course listing:
1) Autoenrol all students in a generic welcome/orientation type course. This will get rid of the default All Courses list.
2) Create a custom renderer.php for your theme which would prevent the course list from appearing.
3) Use CSS to hide the listing. The down side of course is that it would actually still be there in the source code and might still appear until the CSS has finished loading.
4) Create a tracker issue for it but be sure to search for an existing one first. Here is a link to help you get started on your search: https://tracker.moodle.org/issues/?jql=text%20~%20%22frontpage%20all%20courses%22
Keep in mind that regardless of the solution, even if they can't see the full list of courses, students might still be able to use the Moodle search engine to search and find them if they are made visible. Be sure to test this because they can figure out the URL for the Moodle search engine, they might be able to use it even thought it is not visible.
One sure way to prevent students from finding courses is to make them not visible and the just create a static list of hard coded links on your front page using something like an HTML or label block. However it could then become a management problem if different students get access to different courses.
Hope you find something in this helpful.
Best regards,
Michael