1, 4, and maybe 3.
In protocol stacks it's often important that the layers should be independent from each other. Layers usually have their basic services they provide and they can provide extra features. For example: in ISO/OSI 7 layer you may write an app which communicates through sockets. If you add a checksum to your own application level protocol layer, then you don't have to rely on either the TCP or the UDP layer's error checking below.
So it maybe true that at the current situation you know that the protocol runs on a certain existing BUS protocol. But maybe in the future (let's say 5 years from now) that BUS will be changed to something else. Some kind of I2C, ODB, who knows. Now, usually newer protocols probably provide better error checking, but you don't have to rely on the unknown.
You can observe this in the ISO/OSI layers, more layers have various error checking. It seems to be redundant, but the layer technologies are exchangeable.