My big point is that in so many cases the defaults of so many things are far from what they should be intuitively. Sure I can muck around with a variety of tags with every single little thing to get them to look the way that I want them to, but I
shouldn't have to. I mean when was the last time that you saw a "submit" button at the top of a form? I personally can't ever remember a time, but IIRC right now html5 just grabs any submit buttons by default (even if they are in a table or something similar) and sticks them at the top of the form unless you specifically tell it not to. You can prevent it with a bit of work, of course, but the point is that you shouldn't have to, because the default is nonsensical. Or take evenly spaced table columns. I don't know about you, but I see a lot more tables with columns evenly spaced across their total area than those that are non-evenly spaced. Yet the default uses a weird stretching algorithm, despite the fact that it looks horrible 95% of the times when it gets used. Just a simple default change to evenly spaced unless you specify it to not be that way would do loads towards cleaning table formatting up.
And many of these defaults don't even have easy "one line" fixes; often the smallest fixes tend to require at least 3-4 lines (well, 3-4 nicely formatted human readable lines) in your CSS file to fix up their look like their defaults should already be, and some of them can take many more than that to get them looking nice.
For example (assuming I remember correctly), the best way to do something such as put an image with a link (where just the image was clickable, not the entire block) that was centered in the middle of your page in html5 took about 7 lines to do, and involved the idea of creating a new centered div class and then treating the image as a text-like block so that you could align it with the text-align styling in said class, and then adjusting the margins on top of that because it won't work right unless you do. When you are purposely treating one type of data as another simply so that you can use the formatting tools that should rightfully be available to the first data type already, that's usually a good sign that there's a problem in your language of choice.
It would be like if for some reason you couldn't convert int values to a string, so instead what you would do is cast the int to a float, then tell the stringstream to display 0 decimal places. It's just not something that makes good logical sense!
Nothing is a big problem, or that difficult to fix, but it's just the sheer number of problems wears down on your over time. With modern capabilities just leaving things as the basics should be able to get me something that at least looks halfway decent, and only requires me fiddling with it if I want a specific format or I want to do something special. It
shouldn't leave me looking at a web page that has randomly shuffled around or hidden some of the elements, jumbled and stretched things for no apparent reason, and overall looks somewhat similar to if a dictionary vomited all over the page.
I guess I'd just much prefer something more programatic that takes the approach of "here's something nice looking, but if you do anything crazy than you might need to cover yourself or it will break" instead of the markup approach of "here's this piece of crap, but we guarantee that it will never break no matter what you stuff into it! Oh you are just using it for everyday, basic stuff? Too bad, because we have to catch everything it'll still look like crap unless you add a lot more work to make it look nice". A "I'd rather have to tell you not to help me on the rare occasion I need to do something more unique" approach rather than a "I want you to do the absolute bare minimum to help unless I specifically tell you otherwise just on the rare chance that whatever you would do would cause problems".