Among others, I think there is one of the main unsolved problems with blockchain - the possibility of blockchain compaction, which prevents it from real use in IoT.
Without this, IoT device is just acting as a light client, so why use blockchain on small device at all?
For example, imagine you've got a security system in your house. Many small sensors are watching and listening whats going on around. Where do they send the collected data and store it for, say, years? Where the algorithms of how they work are stored? On central server?
You can say it is possible to make blockchain take less data, using UTXO, I believe it is implemented in Bitcoin. But how long would it take to plug in new device and sync with others then? Not sure, probably I'm missing the point, please correct me in this case.
There are two possible roads:
1 do all the blockchain work on the IoT device.
2 outsourcing the work remotely.
Option 1 is of course possible for powerful devices, but not for generically low powered sensors. There are some proposed solutions, like IOTA, that promise to be so lightweight that even small sensors can run a "full node". If this is really possible it's not totally clear at the moment.
Option 2 is more closer of how current IoT work with data analytics, that is the data is stored and analyzed remotely. I think that the same approach with the blockchain is the winning one, so hosting the "full nodes" remotely, and having the device just sign transactions and keep the private key. Notice that this approach is highly secure, since the private keys never leave the device. In the future server and storage will not be centralized, for instance one could use services like Golem and IPFS.