Using whereHas with polymorphic relations has never been straight-forward.
The solution below will get the desired results, but I would probably look to optimise further if it was my own (I would worry about performance whenever the count of statuses gets large):
Order::with('status')->whereHas('statuses', function ($query) {
$query->addSubSelect(
'current_status',
Status::select('status')
->whereRaw('statusable_id = orders.id')
->latest()
)->where('current_status', StatusCode::PENDING);
})->get();
Briefly what it does is creates a second sub-select (the first comes from whereHas) which gets the current_status, and then filters the first sub-select by the desired status - from there the whereHas part works as normal.
I would put logic that inside a method on the Order model for convenience.