Во-первых, два не совсем идентичны. Во-первых, компилятор позволит вам назначить любой объект в качестве делегата, а во-вторых, он будет жаловаться, если назначаемый вами объект не соответствует протоколу URLCacheConnectionDelegate. Это достаточно легко исправить, конечно.
В более ранних версиях компилятора Apple Objective-C требовалось явно объявить свойство поддержки ivar, чтобы использовать @synthesize. В какой-то момент (я точно забыл, когда) они изменили его, чтобы компилятор / среда выполнения автоматически создавали необходимый ivar.