If you’re sending create, you must ensure that the document doesn’t exist yet in your index otherwise the call will fail, whereas sending the same document with index will always succeed.
Then, if for performance reasons, you know you’ll create a document (with either create or index) and then you’ll only update just a few properties, then using update might make sense.
Otherwise, if you’re always sending full documents, I’d use index all the time, for both creating and updating. Whenever it sees an index action, ES will either create the document if it doesn’t exist or replace it if it exists, but the call will always succeed.