You're right that in virtually all cases, the camera extrinsics/intrinsics don't change. There only exception that I've encountered is when you're calibrating a camera and committing the calibration, the camera_info gets updated.
However, apart from that, using parameters would be much more cumbersome than using a topic: If you were using a set of parameters, you would need some way of telling the subscribers to an image topic where to look up the corresponding camera info parameters. The only way that I can think of would be a topic where the path to the parameters is published. At that point, it's much better to just publish the full camera_info on that topic. With the camera_info topic, you can use all of ROS's built-in features like topic remapping to get the info to the subscriber.