Делай опциональные поля по дефолту null
При выводе простая проверка
@foreach(Transactions::all() as $transaction)
@if (!empty($transaction->transactionable))
{{ $transactions->transactionable->name }}
@endif
@endforeach
При желании можешь воспользоваться наследование, создать модель Donate, а от неё UserDonate и GouestDonate. У первого будет метод user у второго его не будет.