It's confusing, that move bonus, move cost etc is different for different units. Some units has 2 cost for enemy cities and 1 in friendly city, other 2 in both friendly and enemy, others 1 in both.
When a hero with fly steps on a boat it gets lower move cost. Same for fliers. But fliers don't get move bonus from water units, when flying heroes does. They don't get lower move from units such as the dwarves or sand worms either.
I think some rules would make it easier to remember how things work. Examples are "always cost 1 for any unit to move in any city (except razed cities)" and "stacking flying non hero unit with water or boats unit either always or never give move bonus". Maybe fliers should also get move bonus from other units. Move cost 2 on roads is a big thing by itself, I don't believe that "no move bonus for fliers" is needed to make fliers balanced.