IMO both ID3 and Ogg tags are flawed in different ways. My least favourite ID3 feature is that the codepage of the text isn't defined -- or rather, that it is defined in the standards, but that everyone ignores it and writes text in their local 8-bit encoding and marks it as ISO8859-1. (Whereas the standard says that such tags should be written as UTF-16 -- somehow the magic word Unicode scares people off from using it. I mean, mbstowcs() on the way in, wcstombs() on the way out, how hard can it be?) This means that tag-reading software has no way of telling exactly which characters are meant, unless the tags happen to be read on a system with the same codepage as the writer. Ogg tags are required to be UTF-8, so there's no ambiguity.
My least favourite Ogg feature is that you have to rewrite the entire file when the tags change, because if the new tags cross a page boundary you need to rewrite the page numbers on all subsequent pages. Retagging an Ogg file takes hundreds of lines of code even once you've written the actual tag block. This in turn means that answering the question "are these two files the same apart from the tags?" is decidedly non-trivial.
Peter