How to set up a single driver so that it moves a shape key from 0 to 1 and then another one from 0 to 1
By adding your own function to the driver space you can customise a driver to suit your needs. The following function returns a value between 0.0 and 1.0 based off an input value and and offset.

import bpy

def multi_driver(var, offset):
    val = var - offset
    if val &lt; 0.0:
        return 0.0
    elif val &gt; 1.0:
        return 1.0
    else:
        return val

bpy.app.driver_namespace["multi_driver"] = multi_driver


The last line adds the function to the driver namespace so you can use it as multi_driver(x, y) in any driver you setup.

In this example I am using a custom property as the value input, you can change this for a bone or object location etc. The first shapekey uses an offset of 0, the second an offset of 1, the third an offset of 2 ...