publishReplay allows you to controls when the subscription starts. shareReplay will start automatically upon the first subscription.
Generally, if the observable is to be used in a template (html file) use shareReplay. The advantage being you won't have to worry about unsubscribing etc.