As the title asks. Why is it necessary to state the size of the buffer when sending a packet? When would you ever use a different value (and what happens if you do? I assume it crops the buffer but then again?)
One situation where you would use a different value is when all the different messages are already pre-written into a buffer, and you're just picking and choosing one to send. In that situation, the size argument would be the length of the chunk you picked, rather than buffer_tell(). This variation hasn't caught on in mainstream GML, however.