Кажется, что все в порядке, но внешний оператор if действительно избыточен, как показано в следующем коде
int pos = 0;
int chunkSize = 10000;
while (pos < bytes.Length)
{
if (pos + chunkSize > bytes.Length)
chunkSize = bytes.Length - pos;
stream.Write(bytes, pos, chunkSize);
pos += chunkSize;
}
также будет обрабатывать случай, когда массив меньше размера чанка.