On the MSDN website, the definition for the Stream class
Provides a generic way to see a sequence of bytes.
https://msdn.microsoft.com/pt-br/library/system.io.stream%28v=vs.110%29.aspx
Analyzing
However, I disagree with them as to what is summed up in this simple sentence above. Stream, imagine a flow, which may be unidirectional or bidirectional. Byte array is closely linked to primitive data, it is very close, however with Stream you gain more resources and better management on the part of . NET.
Setting
You mentioned that these files are not large, I understood that your idea is to pass the entire file to an array of bytes, even if they are not large, would not be correct. Working with Streams ensures more autonomy to GC to take care of this part for you and ensure performance to your service, also being able to use virtual memory. Because you are on the side of a server, you have to ensure performance and low consumption.
Stream vs. Array Bytes
- Flexibility for handling.
- More autonomous memory management for GC.
- Functions that characterize a better defined object.
- Async.
- Useful and objective properties.
- Wrapper for Thread-Safe.
- Disposable.
- Buffer may also be located in virtual memory p/files.
Additional information
It was all based on experiences I had, so there may be more details I might have forgotten.
I will leave a link below that is simple and objective as to Stream Operations in WCF.
http://www.codeproject.com/Articles/36973/Stream-Operation-in-WCF