It's not really a sloppy way of coding, it's just a system that has grown over time. It looks like there is some movement toward an XML based method which would be a much more modern way of storing the information, but XML isn't any easier to parse in BASIC than the EBNF standard that SGF files use now. EBNF is just an older markup language.
As for the semi-colons, yes that would work just fine, but there are some other conditions. Breaking up the string on semi-colons would seperate out each move, but then you have to break up each move into property types, of which there may be several per move. It sounds like your plugin might work, CattleRustler. However, if you coded it in VB, did you use a function that reads the string in character by character, or did you build yourself some pattern-matching functions?
/* You are not expected to understand this. */
Dual Athlon 2.0/1GB RAM/GeForce Ti4200-128/Win2000 Pro