In case that 0 partitions is assigned to a task, the open() call in task was not invoked, but then put() was called later. The put() call with empty data is to hand control to the task so that it can continue working on the buffered data.
If task.open() is not invoked in case of 0 partitions are assigned, connector developers needs to do some special handling in this case, i.e. do not call any method in writer to avoid null pointer exceptions. To make the connector developers' life easy, it probably better to change the behavior so the call is made even 0 partitions are assigned .