I had the same issue and ended up writing an ASP function that "prepares" content for the editor (prepends and appends the comment tags to asp script tags) and then "fixes" content before posting back to the database (strips the comment tags).
Seems to work pretty well. However, you'll have to instruct anyone using the control that when adding NEW ASP code, they've got to input <!--<% to start the block, and %>--> to end the block, or the behavior you note will occur.
Adam, in a post below, notes that the behavior is specific to gecko based browsers - it doesn't appear if you're using IE. That's probably due to xml rendering engine differences. It only makes sense that IE (microsoft) would treat the <% %> tag set as CDATA. However, the <% %> tag set, being a Microsoft IIS only thing, is treated as normal input by the gecko based browsers.
Anyway... here's the function... hopefully it makes it through the post intact.
Function fixASPScriptTags(str,obj)
'str = the string to process
'obj = the object to process for: db=database;edit=editor
fixASPScriptTags = str
'if there's not an opening script tag (<%) in the string return the str as is and get out of here
If InStr(fixASPScriptTags,"<" & Chr(37)) = 0 Then Exit Function
'otherwise process the thing.
Dim percentTag : percentTag = Chr(37)
Dim dbStartScript : dbStartScript = "<" & percentTag
Dim dbStopScript : dbStopScript = percentTag & ">"
Dim editStartScript : editStartScript = "<!--<" & percentTag
Dim editStopScript : editStopScript = percentTag & ">-->"
Dim editStartScript2 : editStartScript2 = "<!--" & vbCRLF & "<" & percentTag
Dim editStopScript2 : editStopScript2 = percentTag & ">" & vbCRLF & "-->"
Select Case LCase(obj)
Case "db"
fixASPScriptTags = Replace(fixASPScriptTags,editStartScript,dbStartScript)
fixASPScriptTags = Replace(fixASPScriptTags,editStopScript,dbStopScript)
fixASPScriptTags = Replace(fixASPScriptTags,editStartScript2,dbStartScript)
fixASPScriptTags = Replace(fixASPScriptTags,editStopScript2,dbStopScript)
Case "edit"
fixASPScriptTags = Replace(fixASPScriptTags,dbStartScript,editStartScript)
fixASPScriptTags = Replace(fixASPScriptTags,dbStopScript,editStopScript)
End Select
End Function