So.... I'm answering my own question. This is really simple, but at 100 am when I was initially working through this it didn't seem so for some reason. Was going to delete my post but maybe someone else is looking for the answer to this simple question.
Here's my updated and working code...(and I also pasted the incorrect snippet initially as the Array List was never filled).
Observation obs = new Observation();
....
extensions.add(ext);
obs.addExtension().setExtension(extensions);
So the key bit I was missing was to call addExtension first, and then chain setExtension and pass in the ArrayList.
And that gives me this:
{
"resourceType": "Observation",
"text": {
},
"extension": [
{
"url": null,
"extension": [
{
"id": "odh-Employer-extension",
}
]
}
],
....