If I use the Arduino IDE, at what priority should the task run? And is there any possibility to make it asynchronous?
The priority doesn't really matter much here, unless you have other tasks hogging the CPU that need to be preempted when an I2C transaction is finished.
Asynchronous... well, depends on the definition, see below.
both take a timeout parameter, so I see no way to e.g. introduce a vTaskDelay and release control to other tasks?
Not sure about Arduino, but the 'bare' ESP-IDF drivers will yield the CPU while waiting for a transaction to finish; most likely the Arduino wrappers do the same, so no problem there.
The IDF drivers don't support an 'asynchronous'
programming style, which mostly is a good thing. Still, the I2C hardware will run concurrently to the CPU, and the CPU will run other tasks while one is blocked waiting for I2C to finish.
What I want to do is to read four ADC's (Texas Instruments ADS1015) at 3.3 kHz, which is quite challenging I think?
See also
here 
For best speed, I suggest making the conversions 'overlapping', i.e. start ADC1, start ADC2, start ADC3, start ADC4, read ADC1, read ADC2, read ADC3, read ADC4. This way, the ADCs are working in parallel while the MCU is communicating with the other ADCs.
(Reviewing the older post, I found it'd take 86 I2C clocks per sample. At 1MHz, that's 86us, or 344us of just bus time for 4 ADCs. This would limit you to ~2.9kHz max. on a single I2C bus.)