Not really:
make a copy of the props, change them, then call replacePluginPropsOnServer() - only sends the device's props dict (even a largish dict shouldn't be a big deal -nothing worse than updating a bunch of states at the same time).
What you may need to pay attention to however is the effect that a props update can have: namely, you only want the device to restart when a property changes that is, for instance, used to communicate with the device. There is a method that you can implement in your plugin,
didDeviceCommPropertyChange(self, origDev, newDev) that will allow you to more finely determine when a device should restart (deviceStopComm, deviceStartComm) in reaction to a property change. The default implementation is whenever there is any change in the props dictionary. However, most plugins only have a few properties that are critical enough that the device should restart.
For Instance, in the WeatherSnoop plugin, we only look to see if the instance URL has changed (because we do some caching with that data). If it has, then we restart the device. If it hasn't, then communication will continue to work fine and there's no need to restart the plugin (because any other properties we use we get dynamically from the device and so we'll get the new version automatically).
If your device never caches any information, but rather always gets the props just before using them, then you can just always return False from that method and the device will never automatically get restarted (other than a server restart of course).