Is this expected?
Yes.
Applying a constraint applies the constraint to the object or bone transform, on the current frame only. It does not apply the constraint on all frames, and it does not keyframe the applied transform. It is useful only for a one-time manipulation-- say, pointing Suzanne at the current location of the camera.
There are a number of reasons for this, but one significant reason is performance. Applying the constraint on all frames takes a lot of time. If you don't want to do it for all frames, then applying a constraint does what you want. (Similar options here are "apply visual transform", which applies all constraints to the transform of the bone or object, and keyframing a "visual" keyframe, which also creates a keyframe for that new transform.)
Should it not "bake its animation" based on the object is was copying?
If you want it to bake the animation, you can use a "bake action" operation instead; there's no need to apply the constraints. As far as I'm concerned, that's the raison d'etre for the bake action operation. See below...
if I used the menu "Object >> Animation >> Bake Animation" should not the same thing occur?
If you bake action with "visual keying", then all constraints on all baked frames will be applied, for each of those frames, and keyframed. (If you do not enable "clear constraints", they may be overridden by those exact same constraints however-- applying a full-influence copy location without clearing the constraint won't do much so long as that constraint exists.) If you do not enable visual keying, then the constraints will not be applied to the action that you bake.