I've got a class that inherits from CBaseAnimating and it seems like changes to pev->origin and pev->angles don't cause any changes to the rendered model (but traces do seem to respect the new position).
If I inherit from CBaseMonster the problem goes away - I've narrowed the cause down to CBaseAnimating :: StudioFrameAdvance (which gets called as part of CBaseMonster's main think method). Specifically, the line pev->animtime = gpGlobals->time; seems to cause the rendered model to update. Doing this manually seems to produce jittery results that reverse themselves after a second or so. pev->animtime += 1; seems to sync the changes without any jitter, although changing another attribute causes a delayed change of the previous attribute before updating the new attribute.
Anyway, I've wasted a lot of an afternoon trying to figure out what the problem was. If there's a better solution (one that doesn't cause a delayed change when changing a new attribute) I'd be interested. Any ideas why changing the animation time is needed too? Changing these attributes on sprite-based entities works fine I think.