Copy Rotation Bone Constraint not Smooth
If you rotate your bone B around Y and observe its rotation values in XYZ euler, you'll notice all the values change when you expect only the Y axis to change:



This is because the bone was previously rotated from its rest position. The bone rotation is represented always from its rest pose - so what those numbers are is a combined(resulting) rotation of rotating it from the rest pose and then around the Y axis.

So the first problem is that your Y channel doesn't represent the change you rotated around local Y in viewport.

The other problem is that a bone can be rotated only +-180° (with constraints). If you expect to rotate more than this (let's say +190°), the bone rotates actually the opposite shorter way (-170°).

Both these things cause the A bone to rotate the wrong amount and to have a point where it suddenly flips.

The solution is to add bones D and E:




D has Dummy Track targeting tail of B.
E is parented to D and has Copy Rotations from B (world/world).


This way the E bone is only rotated of what the B bone is in Y axis (because the dummy track won't rotate the bone D in Y - it will only rotate in X and Z)

Finally bone A Copies Rotation from E, but Local/Local spaces.

Now if you rotate bone B to a position with only Z or X axes, the bone A will not move. And any Y rotation will be correctly projected onto A.