Ah, ok. I didn't write the code, and I've never used it to upload a file, so I am trying to figure out what to do based on docs I can find.
I'll have to see when I can find the time to setup a small test.
As far as I can see, the curl class doesn't do anything special other than encapsulating the curl methods, so I can't immediately see why it would behave differently from plain curl code.
The option is optional, as the name implies. And parameters must always be passed as an array, see http://docs.fuelphp.com/classes/request/curl.html#/method_set_params. We can't force it to be an array, because the params are used for all HTTP methods, and sometimes, even with POST, it should not be an array.
curl isn't my thing, otherwise I would have spotted the fact you didn't pass it as an array earlier...