I would suggest the following approach
1: Use a configurable joint and translate the elevator with it, using one of its axis.
2: why would translate not working? simply watch for the value and stop when it's twenty
I have been following this post with one eye, and I am not sure why you need such an accurate destination, 20, I mean what happen in your game if it's 19.9? Maybe the key would be to modify the behavior that doesn't work because of this inacurracy instead of trying to fight this?
to answer your question number 2:
-- speed is to reach b with a given speed: the object will not go faster then this speed in order to reach b
-- time is to reach b in a given time: the object will take exactly this amount of time to reach b.
Sometimes you want to control one, sometimes the other, it depends on what you want,
To answer your question 3:
fixed update and late update within playmaker action is something you will likely have to customize, some do use this, but not all: You can either define a boolean to control this from the action interface, or simply modify the action you want ( and duplicate it, otherwise it would get overrided in the next playmaker update).
This question 3, it could very well be the reason of your inacurracy ( stopping while the physics engine has one more round to move things, or something). If you have a scene to share, don't hesitate!
Bye,
Jean