They both work the same. The file is passed through the same functions that generate the thumbnail. The only difference is the original file is moved with PHP function move_uploaded_file on upload, which is probably where its permissions are getting set. This is a permissions issue on your server directly. The tmp folder that PHP uploads to needs proper permissions or the files uploaded to won't be set properly. Thumbnails are created in the images/comprofiler/ folder after the move is done so the tmp permissions are irrelevant for thumbnail (probably why it works).