Any time you use an object (including {}) as a default value for an argument, the object is instantiated on every call to that method. So using nil here reduces allocation somewhat.

I also find that uniformly using nil as a default value has some benefits in terms passing arguments down the chain - you don't have to remember what the default value is if you want to mirror arguments down.