I did experience the same issue. I couldn’t find any consistency or explanation for this. Since then I just make sure to return a number or string instead of a boolean in AppleScript handlers called from Obj-C.
if I get the class on the id return it’s NSCFBoolean. Not sure how to get the class from the BOOL return- can’t call className on a BOOL…
I changed all my return values to 0 and 1 instead of true, false and it works now with the original BOOL declaration… or I can change the declaration to -(id)… and leave the true and false. Sticking with 0 and 1 as it seems less error prone?