The "Defend" command just sets the parameters for a defense order from Comms. That is, when Comms gives a "defend" order the mission script command tells the neutral to get within (value1) of the object it is defending. Once it is within (value1) any enemy that comes within (value2) is subject to attack.
As far as I know you are correct; there is no way for the script to tell a neutral what it should be defending. That would be a useful thing to have.
For now I suggest that you use TARGET_THROTTLE to get the neutral close to the thing you want it to defend, followed by a bunch of ATTACK blocks to make it attack enemies that come close. If the thing being defended is destroyed you should clear and rebuild the brain stack, possibly assigning a new TARGET_THROTTLE.
"Damn the torpedoes! Four bells, Captain Drayton!"
(Likely actual words of Admiral David Farragut, USN, at the battle of Mobile Bay. Four bells was the signal for the engine room to make full steam ahead).