Cloudfront is a paid CDN service by AWS, so the main difference with Cloudflare is it will host your static assets on a subdomain like cdn.yourdomain.tld to deliver them faster to your visitors depending on their geographic location, when Cloudflare only cache them to do the same.
Additionally you are billed on bandwidth usage with Cloudfront.
Cloudfront is just another Amazon service. Amazon have become too greedy and try enter each and every niche... I would not be surprised if they start selling toilet paper wit their logo on it anytime soon. CloudFlare is popular in the web hosting industry and there is a good reason for that. It works good even on their low end level.