Make sure both of these settings for your publication is set to False which is the default. It these are set to FALSE and you DO NOT reinitialize your subscription snapshot should only be generated for new articles.
If you are changing any portieres of the article you have to reinitialize and recreate full snapshot.
[ @immediate_sync=] 'immediate_synchronization' Specifies if the
synchronization files for the publication are created each time the
Snapshot Agent runs. immediate_synchronization is nvarchar(5), with a
default of FALSE. If true, the synchronization files are created or
re-created each time the Snapshot Agent runs. Subscribers are able to
get the synchronization files immediately if the Snapshot Agent has
completed before the subscription is created. New subscriptions get
the newest synchronization files generated by the most recent
execution of the Snapshot Agent. independent_agent must be true for
immediate_synchronization to be true. If false, the synchronization
files are created only if there are new subscriptions. You must call
sp_addsubscription for each subscription when you incrementally add a
new article to an existing publication. Subscribers cannot receive the
synchronization files after the subscription until the Snapshot Agents
are started and completed.
[ @allow_anonymous=] 'allow_anonymous' Specifies if anonymous
subscriptions can be created for the given publication.
allow_anonymous is nvarchar(5), with a default of FALSE. If true,
immediate_synchronization must also be set to true. If false,
anonymous subscriptions are not allowed on the publication.
My personal preference is to group articles into multiple publications. That way even you have to reinitialize subscriptions and generate new snapshot you can run multiple jobs at the same time. You will need to make a choice if you want shared or individual (per publication) distribution agents.