Ultimately, I decided to highlight the target row by simply selecting it. The implementation of this component already hides checkboxes from the user, so this was a very simple way to identify the row. Unfortunately, there are no styling hooks for changing the selection color, so I also added an icon.

// component.html
<template>
<div class="slds-p-around_medium">
<template if:true={gridData}>
<lightning-tree-grid
columns={gridColumns}
data={gridData}
key-field="Id"
is-loading={isLoading}
hide-checkbox-column=true
ontoggle={handleRowToggle}
expanded-rows={currentExpanded}
show-row-number-column=true
>
</lightning-tree-grid>
</template>
</div>
</template>
// component.js (edited for brevity)
import { LightningElement, api, track } from 'lwc';
import getInitialData from '@salesforce/apex/ComponentController.getInitialData';
import getChildRecords from '@salesforce/apex/ComponentController.getChildRecords';
export default class Component extends LightningElement {
@api recordId;
isLoading = false;
selectedRow = [];
@track gridData;
@track gridColumns = [
{
type: 'url',
fieldName: 'url',
label: 'Name',
typeAttributes: {
label: { fieldName: 'Name' },
tooltip: { fieldName: 'Name' },
},
cellAttributes: {
iconName: { fieldName: 'isCurrentAccount' },
iconPosition: 'right',
iconAlternativeText: 'Current Account',
},
},
// other columns
];
connectedCallback() {
this.fetchRecords(this.recordId, true);
}
fetchRecords(parentRecordId, onLoad = false) {
this.isLoading = true;
this.getData(onLoad)({
recordId: parentRecordId,
})
.then((serverData) => {
if (serverData) {
const newGridData = serverData.map(record => this.buildTreeNode(record));
if (onLoad) {
this.gridData = newGridData;
this.selectedRow = [this.recordId]; // SELECT THE TARGET RECORD HERE
} else {
// async loading of nested records
}
this.isLoading = false;
}
})
.catch((error) => {
// handle errors
});
}
buildTreeNode(element) {
let record = element.record;
// SPECIFY THE ICON VALUE HERE
if (record.Id === this.recordId) {
record.isCurrentAccount = 'utility:success';
}
// other stuff, mostly related to the nested _children
return record;
}
// the rest, unrelated to this question
}