An optoisolator & TRAIC works with AC incandescant bulbs by switching on the current for part of the AC cycle. I don't know much about dimming fluorscent lamps, except that method doesn't work... One complication is, at low levels you have to keep the starter filaments powered-up, and a simple TRIAC-based dimmer will reduce power to the filaments.
You might want to do some research about how fluorsecent lamp dimming works before you jump-in.
I found [u]this electronic ballast[/u] that works the same as high-powered LED dimmers - It uses a 0-10VDC control voltage to adjust the brightness.
With a ~10V power supply, a transistor or MOSFET, and an RC filter, you can convert the Arduino's PWM output to a variable DC control voltage.