Avoiding a full re-initialization when making changes to transactional replication
I've done that but I've still sometimes had it prompt to reinitialize the whole thing.


The snapshot will only contain the new table that has been added. 


  Also, we frequently remove a table from replication but need to add it back in later, are there scripts out there to preserve the replication settings so this process is easier?


Script out replication - right click - script to file. Change the parameters @immediate_sync and @allow_anonymous should be set to 0.

Run the script post completion of your work. 

Also, check my answer for Transactional replication altering tables and adding stored procedures that will help when you are adding columns to existing replication.