The id change behaviour sounds pretty strange. The ID is usually created by the client. The server can autogenerate an id if none is supplied on node creation, but this would always generate a random id, even prior to the changes to pubsub in 3.8.
You can configure the pubsub service to not cache by setting the system property xmpp.pubsub.flush.cache to 0 (it defaults to 1000) which would turn caching off altogether so there is no risk of data loss. You can also reduce the interval between cache flushes with the property xmpp.pubsub.flush.timer. It defaults to 2min but can be reduced to as little as 20s.
You are the only one who can judge if the perfomance impacts of this are acceptable. Depending on your throughput, it may make no negligible difference at all.