Why is my alpha pass binary (just 0's and 1's) in Cycles?
You have only 1 sample set for Cycles:



Any particular sample in Cycles will return either 1 or 0 for the alpha channel. Antialiased alpha edges are built up by averaging multiple samples, some of which strike the occluding object and some which do not. Using a larger number of samples, such as 16, will fix the issue.