Ah! Got it. The issue is that AE isn't updating fast enough between the time you add the expression and when you sample the property value. I found that by forcing the script to wait for a little bit (150ms seemed to be the sweet spot in my testing) it would catch it 100% of the time.
Here's a revised onClick. Also cleans up some of the redundant logic (and you never declared 'g' or 'b', so they were global..)
apply.onClick = function() {
clearOutput();
var myComp = app.project.activeItem;
var myLayer = myComp.selectedLayers[0];
app.beginUndoGroup("Extrapolated Zeugma");
myLayer.property("ADBE Effect Parade").addProperty("ADBE Fill");
myLayer.property("ADBE Effect Parade").addProperty("ADBE Color Link");
myLayer.property("ADBE Effect Parade").addProperty("ADBE Color Control");
var colorControl = myLayer.property("ADBE Effect Parade").property("ADBE Color Control").property("ADBE Color Control-0001");
colorControl.expression = colourExpression;
$.sleep(150);
var controlValue = colorControl.value;
var r = controlValue[0];
var g = controlValue[1];
var b = controlValue[2];
alert("RGB: " + r + "," + g + "," + b);
app.endUndoGroup();
};