This is not the best answer, but perhaps a good starting point.
There exists a resource function developed by @Carl Woll that is called GraphicsInformation
You can do
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot
and you will get a result with a mismatch.
However, I claim that the missing factor between the first number and the value of ImageSize
is always $\tfrac{4}{5}$
I have checked the following examples
plot1 = ListPlot[{}, ImageSize -> 300, AspectRatio -> 1];
plot2 = ListPlot[{}, ImageSize -> 300, AspectRatio -> 2];
plot3 = ListPlot[{}, ImageSize -> 300, AspectRatio -> 3];
plot4 = ListPlot[{}, ImageSize -> 300, AspectRatio -> GoldenRatio];
plot5 = ListPlot[{}, ImageSize -> 300, AspectRatio -> 1/GoldenRatio];
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot1
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot2
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot3
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot4
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot5
Then
plot1 = ListPlot[{}, ImageSize -> 400, AspectRatio -> 1];
plot2 = ListPlot[{}, ImageSize -> 400, AspectRatio -> 2];
plot3 = ListPlot[{}, ImageSize -> 400, AspectRatio -> 3];
plot4 = ListPlot[{}, ImageSize -> 400, AspectRatio -> GoldenRatio];
plot5 = ListPlot[{}, ImageSize -> 400, AspectRatio -> 1/GoldenRatio];
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot1
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot2
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot3
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot4
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot5
And finally,
plot1 = ListPlot[{}, ImageSize -> 55, AspectRatio -> 1];
plot2 = ListPlot[{}, ImageSize -> 55, AspectRatio -> 2];
plot3 = ListPlot[{}, ImageSize -> 55, AspectRatio -> 3];
plot4 = ListPlot[{}, ImageSize -> 55, AspectRatio -> GoldenRatio];
plot5 = ListPlot[{}, ImageSize -> 55, AspectRatio -> 1/GoldenRatio];
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot1
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot2
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot3
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot4
"ImageSize" /. ResourceFunction["GraphicsInformation"]@plot5
The above is not rigorous, but perhaps is pointing towards the right direction. Of course, more checks are needed. A robust explanation would be fantastic really. Finally, to the author of the O.P, if you are unhappy with the answer let me know and I will delete it.
Options[plot, ImageSize]
results in{ImageSize -> 500}
$\endgroup$