If TSPANs are positioned absolutely (ie. they have x and / or y attributes) then you can't move then by moving the parent TEXT. You can either (a) position them relatively (using dx and dy), or (b) move the entire text block by using a transform on the TEXT or a wrapper G. I found inconsistencies in how IE and Chrome render font-widths so used (b) to good effect.
See http://jsfiddle.net/gHdR6/15/ for the updated demo. Here's the SVG structure which works:
<text transform="translate(772,439)">
<tspan x="0" dy="15">Transport and </tspan>
<tspan x="0" dy="15">communication </tspan>
</text>
Your zoom (or animation) code then needs to update the translate for these nodes instead of x and y.