It's actually rather simple to achieve this with Transformation constraints. The key is that your reference of where to get the target transformations from is not a helper bone, but the end bone (the last element) of your telescope. You can check out this blend file here:
Move the bone Segment.1 along the Y axis (I've locked the other axes anyways) to see the effect. It should be exactly what you can see in this little animation here:
Please note that I've made the size of each segment slightly different, so you can see what you're doing when the rig is fully compressed. The transformations I'm referring to however are in this example always constant distances of 0.3. You'll see soon that you're absolutely free as of what distances each segment has though.
Start with creating the armature, and then the segment bones in
Edit Mode. Make sure that all segment bones are within the same location, that means you're 'modelling' the compressed state of your rig now. Then parent each segment to a main bone to be able to move the rig around later. Do not create parent/child relationships between the segments themselves.
The rig at this point looks something like this (without constraints yet, we add them in the next step):
Now, select the 'tip' bone (the one which you will transform when animating the rig), in my case that's Segment.1, and then Shift select the first bone that should follow with a delay, that's Segment.2, and press Ctrl + Shift + C to bring up the Constrains menu. Choose Transformation from there. On the child bone, You should see something like this now in the bone constraints tab:
You have a Source section, a Destination section, and a Transform Space section. Transform Space needs to be local in this example, so we want to read and set the bone channels in their own local space. Important are now the Source and Destination fields. On the source and the destination, we tell Blender to check for a Location. Then, we fill in the field for the Y-axis. Min and Max that is. We do the same for the destination. The values in the screenshot now tell Blender the following:
If the user moves the tip bone, and the local Y value of the tip bone is inbetween 0.3 and 1.2, move the destination bone inbetween 0.0 and 0.9.
That means, you need to translate the source bone to local 0.3 in Y first, before the Transformation constraint does anything at all. Then, while inbetween 0.3 and 1.2, it translates the child bone from 0.0 to 0.9. Why these values? Each segment has a length of 0.3. So that's the lower travel boundary for the first bone. The target value for the second segment therefore has to be
TranslationMaxOfTip - LengthOfBone. For the next segment, the constraint is the same (we stil reference the tip bone), but we have to move the bone only if the tip is inbetween 0.6 and 1.2, and from 0.0 to 0.6. Do this for all succeeding bones, same constraint, just altering the limits.
Your values will be different, but the concept is the same.