This is largely speculation based on what I can see in php-src - it appears that the `$data` argument is included for two reasons:
1. If you subclass `SessionHandler` and implement `SessionUpdateTimestampHandlerInterface`, your `updateTimestamp()` method may be called - but you can't call `parent::updateTimestamp()` because that method isn't implemented on `SessionHandler`. So instead you must call `parent::write()` which means you need the data to avoid overriding it with a blank session.
2. This simplifies the source code for PHP, since depending on whether there _is_ data and whether lazy `session.lazy_write` is enabled, either this method or `write()` will be called when the session is closed. Having the same arguments means only the name of the method being called has to change, not the arguments.
The second reason feels a bit flakey so I don't trust my own reasoning there. But the first reason seems sound.