Thanks for the idea, but that doesn't seem to be the issue--all headless tests still run fine.
One thing I did skip over is that other WTP project builds are constructing a test application command line with "null" instead of an entry from the specified toolchains or the JRE running the build. That's a bug, right?
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:2.1.0-SNAPSHOT:test (default-test) on project org.eclipse.wst.xml.ui.tests: An unexpected error occurred while launching the test runtime (process returned error code 127). Command-line used to launch the sub-process was null -Dosgi.noShutdown=false -Dosgi.os=linux -Dosgi.ws=gtk -Dosgi.arch=x86_64 -Dosgi.clean=true -jar /jobs/genie.webtools/webtools-sourceediting_master/workspace/.repository/p2/osgi/bundle/org.eclipse.equinox.launcher/1.6.0.v20200915-1508/org.eclipse.equinox.launcher-1.6.0.v20200915-1508.jar -data /jobs/genie.webtools/webtools-sourceediting_master/workspace/xml/tests/org.eclipse.wst.xml.ui.tests/target/work/data -install /jobs/genie.webtools/webtools-sourceediting_master/workspace/xml/tests/org.eclipse.wst.xml.ui.tests/target/work -configuration /jobs/genie.webtools/webtools-sourceediting_master/workspace/xml/tests/org.eclipse.wst.xml.ui.tests/target/work/configuration -application org.eclipse.tycho.surefire.osgibooter.uitest -testproperties /jobs/genie.webtools/webtools-sourceediting_master/workspace/xml/tests/org.eclipse.wst.xml.ui.tests/target/surefire.properties in working directory /jobs/genie.webtools/webtools-sourceediting_master/workspace/xml/tests/org.eclipse.wst.xml.ui.tests -> [Help 1]