There is nothing in the protocol spec preventing a service id from being published after having been unpublished, but keeping the same generation number makes it hard for the client to know what is the desired state for a particular generation (published, or unpublished).
Thus, an explicit unpublish operation followed by a publish on the same service id MUST increment the generation number.
No client implementation is known to reuse unpublished service ids (which should probably also be a SHOULD requirement not to).