Hi - I asked that question a couple of years ago:
I'm using my own software to control my Sonos using UPnP for some special setup. When sending an audio file, in UPnP it's a simple webserver that handles the player's request. Sonos devices handle well, when the file is flac or wav, a HTTP transfer mode named chunked-encoding which is used when the source does/can not know the size of the file to be transmitted and just send data in chunks. Strange enough, chunked-encoding does not work with MP3 and I can't see the reason why, so the un-elegant workaround is to fake a file size and cut the HTTP connection when needed.
I was hoping that this would be corrected with new releases, but it does not seem to be or there is another reason that I'd be curious to know. I know this is not a forum for dev and Sonos has little reason to spend quality time on that, but raising a ticket does not hurt and if it ever reaches the dev team, they might want to correct that for sake of a cleaner implementation (although the Sonos' UPnP implementation is the cleanest I've seen so far)