Why WordPress is picking archive.php instead of page.php?

You can’t use the slug careers as a page slug as it’s already in use as the CPT name. /careers is your post types archive, that is why it’s loaded archive.php and not page.php.

Even if you did have a page with that slug, the archive rewrite rule has a higher priority. You’ll also find it in the generated sitemap, and the /careers slug is also used to generate the permalinks for individual posts of that type.

The closest you can get is turning off the archive.

I tried to force the template by selecting a custom page template but that didn’t help.

This doesn’t work because the page is never what is being displayed to begin with. WordPress believes based on the main query it is on an archive of posts of type careers and will behave according to the standard template hierarchy, choosing the most specific template it can find that matches. E.g. if archive-careers.php was available it would have loaded that instead.

Remember, the template chosen is determined by the parameters of the main query. WordPress didn’t load a page because you were on page.php, it’s the other way round, it loaded page.php because the main query said it was for a page, and it may decide to load a custom page template if that page in the query specifies one. But if it’s an archive that doesn’t happen. Look at the template hierarchy for more details.

Or even with the help of Elementor pro?

If you want to style that archive using Elementor, then you will need to contact Elementor support or post in an Elementor community. 3rd party plugin dev support is off topic here and not in this stacks scope.