The reason for this is to ensure that Minecraft picks up the value as the correct type, but it's not always necessary. Sometimes people overdo it. Invisible for example isn't a byte but a boolean and can therefor be triggered with a simple 1 or 0 (true/false).
Problems start when you use a value which Minecraft could pick up as the wrong type.
For example, if you look at the Item structure overview (scroll down) you'll notice that 'Count' is a Byte value (hover the mouse over the icon in front and you'll notice TAG_Byte). Look at the NBT format page for the exact values. TAG_Byte can have a value ranging from -128 to 127. So far so good.
But if you use Count=5 then how is Minecraft to know that you used a Byte and not, say, an Integer or Short instead? (TAG_Short, value ranges from -32768 to 32767).
So to enforce that you use Count=5b, so that Minecraft will know you're passing a byte value and not something else.