There are several issues with your command.
The first one is a compressed archived cannot be updated. You would need to first create a uncompressed archive, update it and finally compress it.
The second one is the
tar syntax is incorrect, the first
-exec clause should use either the
+ terminator or the
\; one, but not both.
The third one is more subtle and occur if you keep the
+ terminator, the second
-exec clause will be executed for each file on sequence while the first one will wait for the list of files to save to fill the environment string to be launched. When this happen, all the files to be stored by the first
-exec will have already been deleted by the second
tar will fail and you'll have lost all of your files.
As there is no doubt you are using
GNU tar, here is a simple way to achieve what you want :
tar --files-from <(find . \( -name "*.c" -o -name "*.sh*" \)) \
--remove-files -cjf mycompress.bz2.tar
GNU tar is documented to remove the files only after they have been saved:
$ man gtar
remove files after adding them to the archive
Note that the command I suggested will fail to process files with an embedded new line but that should be quite an unlikely event.