You need to hook an action or filter that fires when or after the portfolio_image meta data is saved. It could be “save_post”, or “update_postmeta”. I like “update_{$meta_type}_meta” because it only fires for my post type ($meta_type). Your callback then needs to see if an attachment post is already in place for the image by searching the post meta key _wp_attached_file for the file URL. This is normally a /wp-uploads/ relative path, but I believe absolute URLs or absolute paths are acceptable. I’ve not tested this.
If there is no attachment post, create one with wp_insert_attachment(). Refer to the User Notes on the linked page for how to also update attachment meta data and how to set the featured image with set_post_thumbnail().
If an attachment post already exists for the image, you only need to use set_post_thumbnail(). Once set, when someone opens the edit screen, the image will appear in the featured image box. But if someone enters a new image URL in portfolio_image, while it will be properly saved by the code described above, the image will not automatically appear in the featured image box until the post is saved and the edit screen reloaded.
To have the image appear right away, you need some jQuery to update the featured image meta box content anytime portfolio_image changes. It may be a good idea to hide the delete featured image link so users are forced to work through the portfolio_image field. Before spending any time developing any of this, do a quick test to be sure URLs work in _wp_attached_file post meta and in wp_generate_attachment_metadata(). I hope you can understand most of this, it is better than me trying to write in your language ??