First, every stream item is certainly embedded in a transaction. So there's no reason at all not to use regular transaction fees to charge for writing to streams. By default fees will be related linearly to transaction size, but you can use a transaction filter to apply another fee policy if you like.
If you are going to publish off-chain stream items, there's also a blockchain parameter minimum-offchain-fee that allows fees to consider the size of the off-chain data published (since that size is not reflected directly in transaction size).