If you're only using this method on Detail.vue, and presumably this is only showing the details for a single Tenancy, your fear of loading the landlord() and service() relationship for more than one resource isn't really an issue...
But for the sake of argument, lets say you were listing out all Tenancy's, and with this list, you wanted to show service_charge for each one....
I think you'd probably want to do something like this:
return TenancyResource::collection(Tenancy::with(['landlord', 'service'])->get());
This would mean that landlord and service would be eager-loaded once (each), rather than for each individual $tenancy in the collection.
There's really no way of knowing, in that case, whether or not the relationships will be needed unless you knew for charge that every Tenancy in the collection had its own non-0, non-null charge field.
But at least this is only 2 extra queries, instead of 2 extra queries for every single item in the collection.