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();
};