Well, the 4 connections you're describing are the only connections to a DC solid-state relay. No board required (unless you want to put it on one and not solder right to the pins).
An optoisolator solution would work too though would need a secondary driver on the isolated side, like a MOSFET or BJT, because optoisolators are not designed to carry 1A of current. So probably a cheaper solution, but more parts and more design.
Your call.
--
The Quick Shield: breakout all 28 pins to quick-connect terminals
If you do use a MOSFET, you need to connect the grounds together, unless you want to keep them isolated. You can use an optoisolator in that case to keep the grounds separated.
It is not dangerous to connect grounds together, but switching large currents can cause "ground bounce" on the Arduino if you do not wire the grounds properly (i.e., keep the high current power traces separate from the low current power traces). Ground bounce can cause the Arduino to reset itself when you switch the siren on.
A MOC3020 is not a valid subsitute for an SSR at the current levels you are working with (1A). It is only designed to carry a few milliamps on the output side.
--
The Gadget Shield: accelerometer, RGB LED, IR transmit/receive, light sensor, potentiometers, pushbuttons
If you don't need isolation then you can just use a transistor, but you need to put the load on the collector ("high") side rather than at the emitter pin.
Here's a basic circuit for using a MOSFET to control your siren (it's for a fan but it will work just as well for any DC load):
You have not revealed any reason why you need to use an opto-isolator?
to be honest, I don't know... I was just trying to be safe
Can I always connect grounds of circuits? Sometimes I see people saying it's not a good idea, so I'm not sure when it's ok and when it's not
is there any rule of thumb?
A 2N2222 will not handle a 1A load.
R4 will limit it to 12/15 = 800mA (I'm guessing it will be enough for a loud siren, but of course I'll check before)