I finally got round to modifying the lisp to work with annotative scaled text / blocks as well. The trick is either to use VLA or if you use the entmod to only send it the values which should change - see the 175th line. It's still caling entmod, but only with the ename & text value.
The problem is if you get the DXF data list of the anno text, you get the currently displayed text height. When you send this to the entity using entmod it gets interpreted as the Paper Space Height. And if you thus do this the usual way (i.e. entget to get the list, subst to change the list & entmod to modify the entity) it also then changes the text height to the larger size (i.e. scale X already scaled height). Even though you haven't subst the DXF code 40 for the height. So in the lisp (seeing as I'm not modifying the height) it doesn't form part of the list sent to entmod.
It gets hairy when you want to modify the height! You basically have to find out by how much the value is scaled and then convert so your new height is what's meant for the Paper Height. Fortunately you can use the vla/vlax methods through the entity's ActiveX object reference and change it's height property, but you need to be wary of this problem! So if you know the needed Paper Space height of the text (irrespective of what scales are attached to it) use entmod, if you know the needed Model Space height at the currently displayed scale (not necessarily CANNOSCALEVALUE) then use the vla-put-Height method.