How to reduce the current of a battery with an unknown maximum amperage
You don't need to reduce the current per se, you need to reduce the heating power in the wire. 

The naive approach is to use a linear current or voltage limiter. But this will generate a lot of heat.

A smarter approach would be to use a switchmode current or voltage regulator. This needs an inductor, fast switches, and is more complicated than required for your simple thermal load.

You have already got most of what you need with your Arduino, by PWM controlling the switch.

What you would do is switch the current to the wire on and off, with a duty cycle that reduces the average power to something that will heat the wire to what you want.

There are several caveats.

1) The PWM must be fast enough so that the temperature variation with time in the wire is reasonable. The basic Arduino library does about 500Hz as standard. If the wire needs 3-4A, then I would guess it's heavy enough that 500Hz will be just fine.

2) The battery must be able to supply the peak current. It sounds like it already does if it zaps the wire, but it may have a hard time doing it. Shunt the battery with a very large C to hold it up if there's a problem. You might want a faster PWM to reduce the length of time that the C needs to hold the battery up, and so reduce the size of the C. You can drive the PWM directly for higher speeds, or there may be other libraries.

3) The Arduino must be protected from any excess variation on its supply, if you're using the same battery to supply both the wire and the Arduino. A suitable regulator and/or decoupling for the MCU should be OK.

4) You need a suitable switch, either a logic level drive MOSFET, or a beefy darlington.

The power to the wire varies linearly with duty cycle. For instance if the wire needs 10 watts to reach your desired temperature, and the battery delivers 100 watts to it when connected directly, you'd need a 10% duty cycle. Raise the duty cycle up from 0% when you're testing it.