A workaround and general principle: if at all possible, avoid using the "symbolic ring", particularly if you're interested in numerical approximations anyway. Having all the overhead of SR involved will show down your computation considerably -- and, as you can see, can lead to unstable numerical schemes.
In your case, the symbolic ring gets involved by mentioning "pi". You could do instead
RR = RealField(100) #by default this is 53, which is fine too
(-12.0*RR.pii()).exp() #sage has "float literals" which deals with the precision ambiguity in this notation
A little more mathematical-looking notation:
exp(-12.0 * RR.pi() )
exp(-12.0 * RR(pi)) # this still involves SR, but only minimally
Evaluating this expression should of course just work with pretty much any precision: exp is very well approximated. Rewriting it as a difference of hyperbolic functions is just obviously a bad idea. The reason why the SR takes such bad decisions may be deeper and more difficult to change. So I think it's a bug, but it may not be easily fixable. So: stick with the workaround (which will always be more efficient)