ID3v1 tags have a limit to how big each field can be and ID3v2 tags don't.
ID3v1 tags have a fixed set of possible fields ( artist, title, album, comment, year, genre, and in the case of ID3v1.1 tags, track number ). ID3v2 tags have a fully dynamical structure, not only allowing arbitrary field sizes, but also arbitrary field types. Also, they can contain other things than just text-data, e.g. pictures ( like album covers ) and other data files. They are prepared to support practically any additions without losing backward compatibility to earlier ID3v2 versions, and they even have support for individuals adding their very own stuff to them too.
ID3v1 tags are stored at the end of the MP3 files, while ID3v2 tags are stored at the beginning of them. Storing all such important data at the beginning of files has many advantages. The biggest advantage is that when you are streaming or downloading MP3s from the Internet, you will get all info about them available immediately as the download begins. But there is also one big disadvantage to storing data at the beginning of files. Implementation details of file storage systems on most computer platforms force you to rewrite the whole contents of a file to disk when prepending data to it, while appending data can be done without having to write any additional data than the new one. This means that even if you write e.g. 30 bytes of data to the ID3v2 tag, you might have to write 5 megabytes to the disk. This difference will be especially noticable if the target MP3 is located on a network drive or some other slow medium, and it will be even more noticable in programs processing multiple files in a sequence. This is why you might notice a considerable difference between programs / operations writing only ID3v1 tags and programs / operations writing ID3v2 tags. Luckily, a solution to this problem is implemented in the ID3v2 standard too. The first time an ID3v2 tag is written to a file, it can reserve space for possible other ID3v2 data that might be added in the future, so that additional data doesn't have to be prepended, and therefore the file won't have to be rewritten again. When using programs that take advantage of this feature you will most likely only have to rewrite the whole MP3 file the first time you write any ID3v2 data to it. All consecutive writing to the ID3v2 tag will only take about as much time as writing a common appended ID3v1 tag ( i.e. no time at all ).
( Thanks to Magnus Brading for this info )