Fixed the same issue for CODE tags but didn't fix it for PRE tags.
The reason is that CODE blocks use divs with stylesheets allowing us to use escaping of [ to break out of the BBCode parsing recursion. Pre tags are implemented directly as HTML pre tags and hence do not allow escaping (the escape code would show up instead of the actual char).
The solution is of course to make PRE blocks do the same thing as CODE blocks do now:
1) Add a style for pre divs and convince all projects to update their CSS
2) Make 'pre's do what 'code's do now in text_transform.php - with the exception that they use the 'pre' CSS class instead of 'code'