WhenAction in general is (or should be) only triggered when the action is caused by user interaction.
WhenCursor is deprecated in favor of WhenSel, which should report all changes to cursor or selection.
Anyway, WhenArrayAction is defined to trigger when data of ArrayCtrl are changed by any means. I have tried to fix it in that direction. (Frankly, I have scanned all of my codebase and found only two uses of WhenArrayAction. But you are right that it should work that way).