More tags than the color-tag could generate the </font> end tag, and when parsing the color tag those tags would match as well.
If these tags were used:
[font:courier] Red courier, size 5 [/font]
And it would create the following html:
<font style="courier"><font color="red"><font size="5"> Red courier, size 5 </font></font></font>
Then the regexp would parse the code like this:
[font:courier] Red courier, size 5 [/font]
Because the regex would match the first occurance of </font>. In the above example, the tags are just nested wrong, but it could match other code which would break things even worse. Like </font> which is inside the quote-tag if I'm not mistaken.