I'm not sure I know the real answer but I believe it's more of a historic thing to do with MS outlook as that was the primary email client at the time and support for CSS was negligible; but probably supported its own system of styling (msoformat). As many systems still uses outlook the system never evolved and even recently took a step backwards again.
The original specifications for email software were that they were required to support plain text only anyway.
Originally email was probably plain text in a table structure and needed to be very lightweight as everyone had slow connections and many systems were built on this. However designers found they could add code to the tables to format them differently.
There are also security issues with html emails so its often better to strip code out an be safe than to allow something nasty through. Remember that emails may be read in mail clients that aren't the same as browser and may have access to your system more easily. Security is probably high on the list as to why html emails are so awkward to implement.
There are also issues in how you maintain the css and html of an email when it basically sits inside another web page (such as online email clients) so it is not the same as displaying a web page; it's like displaying a completely different web page inside an existing webpage without each affecting the other one. So obviously there are limitations with CSS and the cascade in these situations.
All email clients are different and have different window pane sizes so you have many variables to take into account and email clients won't let an email take up the whole page so there will be many restrictions in place as to what is allowed also.
There is some more reliable information here.
It would certainly make life easier if we could just use normal css and html and let the email client do all the hard work of converting it into their system.