I 1000% agree with you on the overuse of tables and inline styles. Unfortunately, this problem goes a long way. First and foremost, the "if it ain't broke..." mentality is there. I can't blame anyone for that, but it's an issue as far as upgrading. As components are updated, they should be reworked, but that doesn't always happen either. Everyone works with whatever time they can allot for DNN. Remember that we're a volunteer force. Beyond that, education is another large issue. Unfortunately, most .NET developers develop to IE as opposed to standards. From what I've seen, some might try to standardize layouts, but will often revert back to the "IE way" because of too many issues in getting it setup. I can't blame them for this - I've given up before, too. Yet another problem is .NET 1.1. Unfortunately, the span issue is related to .NET controls - that's just how they work. This can definitely be circumvented in a number of ways, but most people just use the default controls, unfortunately.
These three main reasons are just the tip of the iceberg, unfortunately. I suggest you submit fixes to any problems into the
issue tracker. Create a new issue for every item that should be changed - this will make it easier to mark them as complete. If we log these as we find them, then it's more likely that they'll be fixed.