Currently jcr:created date property in working fine in author mode. But when we published a page multiple time the jcr:created date property is updated in published mode. which is basically a wrong. When we published any assest first time it should consider this is created date and do not to update this date on publish instance multiple times. And should only update jcr:lastModified date in published instance multiple times.
which versione of AEM are you using?
Probably versioning is turned on for that node/page/asset. Check that as well.
But this is not a valuable solution as you suggested to turned off versioning from node/page/asset. Which will lead an issue when we required any old pages to re-use.
The way I read your problem statement is that the mentioned behavior exists on publish server. I'm missing the point that why would you want to create the versions on publish server. I'm not able to think of any use case.
To me versioning belongs to author and not publish server.
I would recommend that you first check the existing configurations and validate that versioning is the actual root cause.
We have a similar need for jcr:created, for analytics purposes. It doesn't seem to matter if we have versioning on or off, the jcr:created date continues to represent the date it was last replicated. Is there any way to get the actual, unchanging, date that the node was created on the author (or pub) instance in the first place? Do we need to create a custom prop on author and persist it?
You should use a dedicated property for that.