Em sistemas baseados no debian (e eu assumo também em sistemas rpm) a remoção de um pacote interrompe seus serviços antes de excluir arquivos (fase de pré-inserção em pacotes deb).
Mas o que você pergunta pode ser obtido inserindo uma dependência com 'require'
package { 'supervisor':
ensure => absent,
require => Service["supervisor"],
}
service { 'supervisor':
ensure => stopped,
enable => false,
hasstatus => true,
}