There’s a bug in older drivers where the texture matrix tracking didn’t work quite right for multi-texturing. Could this be biting you? Note that when using vertex programs, there are no extra matrices applied to your data; you’re responsible for all that.
Anyway, you don’t need a vertex program to do this. All you need is to correctly set up the GL texture matrices using the multitexture functions. Unless you need vertex programs for some other reason, I suggest you stick with the hard-wired path.