The purpose of off-chain stream data is to allow larger amounts of data to be notarized on the blockchain (via hash/es) without every node needing to keep a copy of that data. There's an in-depth explanation here:
https://www.multichain.com/blog/2018/06/scaling-blockchains-off-chain-data/
The binary cache is just an efficient way to get large pieces of data into MultiChain, without having to send it in a single API request. It has no direct relationship to the on-chain vs off-chain question.
To use off-chain data you just need to add a single parameter to a regular publish API call, so if this is not currently supported by the Node.js library you are using, it should be easy to add.