Yes, the Romans had problems with zero as well.
This is just a [non-intuitive] consequence of mathematics (being a strong component of programming, especially early programming) defining zero as the first (problematic term that one) real, positive* natural number, and since an array is indexed with real, natural numbers the "first" element is at index 0.
Months are really named values in an array, where days and years are numbered values - it would perhaps be more useful to think of days/years as being in arrays which look like { "1", "2", "3", ... } themselves.
As to why this is so common (apart from being mathematically correct) well all the languages you listed descend from a common origin for one thing...
Edit:
Looking further into it, this wikipedia link details several good and interesting reasons for zero indexing (which does not directly speak to why months are zero-indexed but I think that's covered already), and this SO link has answered the question before.
Looks like the prevailing opinion is either "historical accident" or "because months are not numbers so cannot be compared to day/year storage" depending on who you ask.
* Sorry, sorry, physics!=maths coming back to bite me there. Off to iron my hands now.