I have seen a similar problem in the past with new computed fields disappearing from indexes on publish. It was caused by multiple Sitecore instances with different code version connected to the same database and Solr server.
One of the differences between the full index rebuild (or re-index tree) and on-publish indexing is the fact that the full index rebuild runs only on the Sitecore instance where it was triggered. However, event-based indexing will be performed by every instance that is connected to the same Event Queue table and has indexing enabled.
If you have more than one Sitecore instance connected to the same database and Solr server and all of them use onPublishEndAsync
indexing strategy, then each of them will try to index the published item based on the configs and DLLs they have. In case your new computed fields are not deployed to other instances yet, then it is likely they will remove new fields from the index when they receive the publish:end:remote
event.
Please note that it is recommended that only one instance performs indexing operations in a Sitecore environment, unless you have multiple Solr servers in a geo-distributed set up.