I don't think I fully understand the setup you have in mind, so I'm not sure if this is a stupid question. Also I'm sadly not too familiar with TCB curves.
But if you have one target that needs to drive another target on a curve, why aren't you converting your curve into a set driven key animation curve when the curve is read into maya? Do you need live feedback when the TCB curve is manipulated?
Because otherwise, what you can do is just use a set driven key, the time value is the Targetweight of your blendShape A and the value of your blenshape B is defined by the vertical value of your curve.
something like this:
global proc convertCurveToSDK(string $blendA,string $blendB, string $TCMcrv, float $drvRangeStart, float $drvRangeEnd, float $step){
float $weightValue[];
for($i=$drvRangeStart; $i <= ($drvRangeEnd + $step); $i= $i + $step ){
$weightValue = `pointOnCurve -pr $i $TCMcrv`;
setAttr $blendA $i;
setDrivenKeyframe -cd $blendA -v $weightValue[1] $blendB;
}
}
convertCurveToSDK("blendShape1.w[0]","blendShape2.w[0]", "curve", 0.0, 1.0, 0.01);
The last line is an example of how the procedure could be called.
Basically this would turn your TCM curve into an animation curve that takes the first target value as time and sets the value of the second target to the Y-value of your curve at the parametervalue of the time.
This has the upside that it is a lot faster than an expression since the connection between the two targets is baked, and once the baking is finished the curve is no longer needed and can be deleted.
It obviously has the downside that the curve is not directly connected to the targets and therefore can't be used to manually change their relationship afterwards, but what you are describing doesn't sound like that feature is intended.
I hope it helps!