What do you get if you type s-a?
This works as expected (i.e. I get whatever is bound to s-a, and s-a appears in lossage). It's only the combination of C-s and M-s that gets translated incorrectly.
Some more debugging output, using NS_KEYLOG = 1. The input sequence is a, C-a, M-a, s-a, C-S-a, M-S-a, s-S-a, C-s-a, M-s-a. As you can see, 'code' is correct (A or a), except for the last two cases.
keyDown: code =61 fnKey =0 flags = 100 mods = 0
keyDown: Begin compose sequence.
2016-03-29 17:37:57.711 Emacs[59410:2534138] insertText 'a' len = 1
keyDown: code =61 fnKey =0 flags = 40101 mods = 4000000
keyDown: code =61 fnKey =0 flags = 80120 mods = 8000000
keyDown: code =61 fnKey =0 flags = 100108 mods = 800000
keyDown: code =41 fnKey =0 flags = 60103 mods = 6000000
keyDown: code =41 fnKey =0 flags = a0122 mods = a000000
keyDown: code =41 fnKey =0 flags = 12010a mods = 2800000
keyDown: code =1 fnKey =0 flags = 140109 mods = 4800000
keyDown: code =e5 fnKey =0 flags = 180128 mods = 8800000