#JavaScript (ES6), <s>58</s> 56 bytes

_Saved 2 bytes thanks to @l4m2 / @Downgoat_

Takes input in currying syntax `(s)(c)`.

<!-- language-all: lang-javascript -->

 s=>c=>s.replace(u=/./g,x=>u=x==c?'':u?x:x.toUpperCase())

[Try it online!](https://tio.run/##Zc9La8JAFIbhfX@Fk4UmkAtuhYlYwVawtvRCd0qcnIS0k5wwF01/fToTrG3Hs3154Dsf2TGTTFStihrMoS9oL2nKaCpjAS3PGPiaJnFShh1NNe0oZfPJZKbn3ayLFb61LYhlJsEPgp5hI5FDzLH0C9@7B85xf0LBcy/wvb0XBKPLJclo6O823ziyhrDBkFefYGH4D1pZwxY3prruC3VUoooqZV105Uy/Q7VWrlvUu/WOcciEdbsrt6jXS1tdVyIpNOeEZa20kvyVxpW4MnlpqitPUIl8fNBqrJ718OX41xo59FutXk117ZPAA4eHaVF1kE8btHr6o40995XNW3Q1aU0mhENNJHnkR8gJuWw/6w3UL0PqvwE "JavaScript (Node.js) – Try It Online")

###Commented

 s => c => // given s and c
 s.replace(u = /./g, x => // initialize u to a RegExp; replace each character x in s with,
 u = // and update u to:
 x == c ? // if x is the separator:
 '' // an empty string
 : // else:
 u ? // if u is not an empty string:
 x // x unchanged
 : // else:
 x.toUpperCase() // x capitalized
 ) // end of replace()