Hmm... You're right.
I tried messing with the surface info utility node, but I ran into problems exactly like you describe.
Ok...
So how about this instead?
I've made an object scale another object based on the object's inverse distance from itself. It's a coupla utility nodes dumped together, simple, and yet more complex then I would have hoped.
It's great for a handful of objects, but I've got to get thousands of them to scale based on their distance from one object. Do I have any alternatives to .mel scripting?
I say this because as much as I know I've got to get into .mel scripting one day. Today, I have no background in it all, and really don't know where to start to make something like this happen.