You absolutely can see a running history of database ownership changes, as long as the information hasn't rolled out of the default trace (how long that takes depends on how busy your instance is in terms of other things that are captured by the default trace). Let's say I created (or restored) a database called splut:
CREATE DATABASE splut;
GO
Then I can change the owner in multiple ways, including through the SSMS UI, but let's do it in two ways from T-SQL:
EXEC splut.sys.sp_changedbowner N'sa';
GO
ALTER AUTHORIZATION ON DATABASE::splut TO sa;
We can see this information in the default trace (the basis for this query is from this canonical question, and there are other auditing columns you could potentially pull as well):
DECLARE @path NVARCHAR(260);
SELECT
@path = REVERSE(SUBSTRING(REVERSE([path]),
CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
LoginName, HostName, TextData, StartTime
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass IN (152) -- 152 = Audit Change Database Owner
ORDER BY StartTime DESC;
Results (note that sp_changedbowner actually generates the same ALTER AUTHORIZATION statement):
LoginName HostName TextData StartTime
--------- -------- ------------------------------------------------ ----------
me\aaron GRONK ALTER AUTHORIZATION ON DATABASE::splut TO sa; 2019-08-01 22:26:58.243
me\aaron GRONK alter authorization on database::[splut] to [sa] 2019-08-01 22:26:38.677
In fact you could probably capture (some) information about the restore the user performed by changing the filter to:
WHERE EventClass IN (115, 152) -- 115 = Audit Backup/Restore Event