Un StreamWriter serve per scrivere testo a un ruscello. Utilizza sempre una codifica e se non ne specifichi una quando la crei utilizzerà UTF-8 (senza un byte order mark - BOM). L'output che ottieni è il codificatore UTF-8 che cerca di tradurre il testo (sotto forma di singoli caratteri) in UTF-8.
Se vuoi scrivere byte in uno stream, scrivi semplicemente nello stream direttamente usando Write metodo che accetta un array di byte. Se vuoi scrivere su un file puoi creare un FileStream e usalo come stream.
La denominazione delle classi all'interno di System.IO lo spazio dei nomi può creare confusione a volte:
Streamè una classe base astratta che fornisce metodi per leggere e scrivere byteFileStreamè unStreamche legge e scrive su un fileBinaryWriterti permette di scrivere tipi primitivi in forma binaria in unStreamTextWriterè una classe base astratta che ti permette di scrivere del testoStreamWriterè unTextWriterche ti permette di scrivere del testo su unStream
Probabilmente dovresti usare FileStream o BinaryWriter sopra un FileStream per risolvere il tuo problema.