Especially when your project starts to become big, it becomes really hard to track everything. Having separate parts of your project makes it easier to maintain, and it allows multiple people work on different files much easily.
The alternative is to dump every directly on the page. Kinda like I do it on this website. Go ahead, check the page source. Don't worry I am not doing this just to stick it to the man. I have very good reasons.
Well in my development process, I still use external files. So I have the same workflow as a team who would be working on multiple files. The difference is, I consider my websites to be applications. When I finish testing them on my local machine, I run a build and it creates the necessary files I need to upload it on my production server.
The other advantage is the development process does not change. When the code is modularized, the right CSS is loaded at the right time and I don't have to worry problems with code reuse.
So the answer is you don't have to use external files if you are building applications. The build process takes care of the things that would manually be a pain to do. Also web crawlers don't care how your generated HTML look like, as long as it is correct.