Sending the information (SPECIALUSER, USERCOLOR; EMOTESET) in seperate messages is just the way the system works. It also sends several SPECIALUSER messages if the user is both a subscriber and turbo user for example. Frankly this easier on the developer since there are shorter messages to parse. This information is generally repeated for all messages since it is broadcasted and jtv can’t keep track of what information you may already have cached.
As to the last message in your picture, I am not sure if this is a bug - in your code or theirs - or a user sending the same message in quick succession.