Why many companies prefer Jenkins than Aws CodePipeline?
Jenkins has been around for longer so it has a larger installed base.  It doesn't matter if AWS has something that is cheaper and better.  Many places don't want to put the time and energy into upgrading Jenkins.  Migrating to a new CI pipeline is even "scarier" -- regardless of whether it would be a wise strategic decision.

Jenkins 1.x made this far worse because of needing extensions for basic functionality.  Different departments wanting different plugins that wouldn't play well together led to multiple Jenkins instances.  Even if the technical challenge of merging these were relatively minor, the chance of getting departments that could never agree on anything before to suddenly decide that they can migrate to some new thing -- that is missing some feature from a plugin they can't live without -- seems pretty slim.