There's no reason why it wouldn't work for objects that move. It just passes the transform matrix as vertex attributes rather than uniforms. You just need to calculate the transform matrix for each object (or pass the minimum you need to change, say position, and calculate the transform matrix in the shader). You can download the source to a demo of the technique from this page
(search for pseudo instancing). It's very old though - you'll have to convert the pre-standardised GLSL support into more modern stuff.