Ok, thanks! I did a little more searching, and also found this article which was very helpful: https://alice-at-ubuntu.blogspot.com/2015/01/how-to-reserve-space-for-panel-between.html
I put together a quick and dirty script which “cheats” by taking advantage of the fact that the top panel is named, conveniently enough, “Top Panel” 
#!/bin/sh
PATH=/usr/bin
export PATH
xprop -root _NET_WORKAREA | while read prop equals value; do
case "$value" in
# Strut has not been set
'0, 0, 1366, 1792,'*)
xprop -name "Top Panel" -f _NET_WM_STRUT_PARTIAL 32c -set _NET_WM_STRUT_PARTIAL 1366,0,0,0,1024,1052,0,0,0,0,0,0
echo 'Strut set'
#xprop -name "Top Panel" _NET_WM_STRUT_PARTIAL
;;
# Strut has been set
'0, 0, 1366, 1024,'*)
echo 'Strut already set'
#xprop -name "Top Panel" _NET_WM_STRUT_PARTIAL
;;
# Should not be reached
*) echo 'Something weird is happening'
echo "Workarea: $value"
exit 1 ;;
esac
done
exit $?
I found it interesting that after setting the strut that that the value of net-workarea changed, but it was useful here.
I’m curious, when you say “detects the change of workarea,” is there an event that occurs when the external monitor is initialized that I can use to trigger the script? Where could I find more information about that, if so? I could run a cron job to check repeatedly, or even run a job that starts at boot and loops for a while to see if I’ve plugged in the monitor yet, but that seems … inelegant.
Also, what is the best technique to use to “properly” detect the window id of the panel? In the script referenced above the author uses wmctrl, which is apparently not installed by default. Is that the best way to get information about all the windows? I found this command on line, seems Ok?
xwininfo -tree -id
xwininfo -root | awk ‘/^xwininfo/{print $4}’`
I do appreciate your help though, as the information in the other thread was a bit too dense for me to parse.
I am curious, why isn’t the panel setting a new strut for itself when the external monitor is plugged in? When running just the laptop’s monitor the top panel does set an appropriate strut. I can maximize windows, open new windows, etc. and the panel strut is always respected. Same if the monitors are side by side (and I would imagine it would be the same if the primary display were on top, although I have not tested it). It seems to only be this configuration that is troublesome. I imagine that’s because the strut it already set works in those other configurations, so it’s actually not changing anything, it’s just a happy accident. Whereas in this configuration that strut doesn’t work.
And one more question. I’m running Pantheon and the dock (Plank). If I open the panel’s properties dialog, the panel appears as an icon in Plank, and won’t go away. It also allows minimizing the panel window if I click on the Plank icon for it. Is this a bug? If so, can you point me to a reference to report it?