Jenkins - Docker cloud agent VS Docker in Pipeline - which is recommended

Hello Jenkins team,

I’m trying to understand why so many people have taken the route of setting up “Docker cloud agent” inside Manage Jenkins → Clouds, instead of just going with “Docker agent” inside pipeline, which is officially supported.

In my view, if I go with “Docker cloud agent” way,

  1. I have to login to the server where Jenkins is hosted.
  2. I need to edit Docker’s service file “/lib/systemd/system/docker.service” and expose REST API port manually.
  3. Do the setup in Manage Jenkins Cloud.
  4. Create a Docker image of your own.
  5. Add that Docker image under “Docker agent template”
  6. Then finally refer that template’s name in the pipeline.

Instead of all these extra steps, if I go with “Docker agent” support inside pipeline directly,

  1. I don’t even need to login to server where Jenkins is hosted.
  2. I can also do more customization using “Dockerfile” and committing it to the source code.

What is the exact reason for choosing OR when should I choose “Docker cloud agent”?
And where is the official documentation to expose Jenkins REST API port like this?

Thank you.