How do I get my iOS calendar to sync automatically?
I had the same problem.  I remembered that I was having battery problems, so I switched "Fetch" to manual mode.  Even though iCloud is setup as PUSH, the calendar seems to be overridden by the "Manual setting for Fetch.

Settings - Mail, Contacts, Calendars - Fetch New Data - Change Fetch from Manual to one of the durations.

Once I did this, and made a calendar change on the Mac, it was immediately reflected in the calendar on the phone.