Suppose you want to apply sales tax.
def withTax(cost: Float, state: String) = { /* Some complicated lookup table */ }
Now suppose you want to make a bunch of purchases in New York.
val locallyTaxed = withTax(_: Float, "NY")
val costOfApples = locallyTaxed(price("apples"))
You get maximal code reuse from the original method, yet maximal convenience for repetitive tasks by not having to specify the parameters that are (locally) always the same.
People often try to solve this with implicits instead:
def withTax(cost: Float)(implicit val state: String) = ...
Don't do it! (Not without careful consideration.) It's hard to keep track of which implicit val happens to be around at the time. With partially applied functions, you get the same savings of typing, plus you know which one you're using because you type the name every time you use it!