Since the city is right next to the strait you when you try and attack it you end up standing on the strait, but you can't end your movement on a strait so you get pushed back onto Sicily breaking the siege. So you need ships to siege it.
Is this intended (it might also be true when attacking Messana from italy) as a way to force you to use a naval assault to secure a beachhead or simply just an oversight?

Also the celtiberian infantry loadingscreen has the Lusotanian emblem, shouldn't it use celtiberian faction's one?