Data should be separated from the language forms that use it. ie, no language specific data should appear in a DB, because when other languages hook into that DB they can't handle all of the data. This is a simple and often ignored rule in the creation of databases :-)

But WP's schema dates back to simpler times, MySQL 4 and a need to work well on slow DBs at low cost providers - that was more of a priority than pure DB theory.

Also because of the way Web apps have to work, using the DB as a sort of variable store isn't unusual and it's sort of OK so long as other things aren't going to have to work with that data. WP isn't exactly spot on with that - the text widget, for example, stores data in a serialised string, which is a bit mad, hence why we wrote the Spots plugin.

Anyway, we run into this all the time, and years ago I created a script to help with migrations and doing a safe search and replace on a DB: http://interconnectit.com/124/search-and-replace-for-wordpress-databases/ does the trick, gets downloaded a hundred or so times a day, so must have something going for it :-)