Why is my Arduino frying my lasers?

Laser diodes are VERY current critical. From a TI article on driving a Laser Diode:

"Laser diodes, because of their nature, need to be powered by a current source.
While having a negative temperature coefficient, laser diode resistance drops with
temperature rise. This means the longer the diode is used continuously the smaller
its resistance becomes due to the heat generated by wasted power in a diode.
With voltage source supply it simply means that the current will rise along with
temperature and at some point destroy the diode due to thermal shock. That is why
semiconductor laser diodes need proper current source driver, preferably with
temperature feedback to stop the diode from overheating."

As Southpark suggested, measure the current to the Laser Pointer while it is being driven by the batteries [that it is usually powered by]. Then use some sort of current limiter circuit to force that current in all conditions. Also, consider that a Laser Pointer is, really, not designed for long periods of continuous operation. Their might not be adequate heat sinking, especially on a cheap unit.

And, if the batteries internal resistance is being relied on for current limiting, as Wawa suggested [very likely -- most cheap "keychain" coin cell LED lights do this very thing], then the voltage across the Laser Diode is probably less than the full battery voltage. But, as long as the current is limited, and the current regulator can supply enough voltage to energize the Laser, the operating voltage will find it's correct level. This voltage is, actually, the Forward Drop of the Laser Diode [unless there is some sort of driver within the pointer, which is doubtful].

A simple and cheap current regulator can be made from an LM317 (Google: "LM317 current regulator circuit"). Because a Laser Pointer uses minimal power, the inefficiency of a LM317 current limiter can probably be overlooked, but if efficiency is an issue, then consider a switch mode current limiter.