tl;dr: Use CSS
When you talk about putting styles into your html, are you talking about placing a <style> tag at the top of the page and writing your CSS there, or do you mean individually styling elements using the
If you mean styling elements individually, the downside is immediately obvious, you have to style the elements individually, which makes your code difficult to maintain. You also lose the power of being able to create a CSS class and apply that class to a selection of elements.
If you are talking about placing all of your CSS at the top of your HTML file, it becomes less of an issue. Some people (myself included) like to break the program down into a small of pieces as possible, where each piece has it’s own job. This is why I put my CSS in its own file. I also assume that if you have a team, and one person is writing CSS and one writing HTML, having CSS and HTML in separate files will lead to less merge conflicts on your VCS. That might not be true (I don’t have much experience with collaboration), but it seems possible.
There is also the fact that you can’t use a preprocessor, such as SASS or LESS, with inline styles. They need to be in their own files to be converted to CSS.