When you open a program that uses incoming network services for the first time, the system will first check whether or not you have a rule for that program in the firewall (if the firewall is active). If there is no rule for the program, the system will ask the user to either allow or deny the program access to incoming network connections.
The request to allow or deny network connections should only appear once for a given program, but there are times when the system may always ask for network connections. Sometimes this can be for all programs, but at other times it may only happen for one specific program. There are a few possibilities why this may happen:
Corrupt firewall settings
Sometimes the system firewall may not be loading properly, which can be from corruption in the firewall settings. If this happens the best way to fix the problem is to remove the firewall preferences file and restart the system. The file is called "com.apple.alf.plist" and is located in the /Macintosh HD/Library/Preferences/ folder.
After this file is removed and the system is restarted, you will be prompted to allow or deny network connections for your commonly used applications again.
Corruption in applications
If the problem happens only for one application, then the program itself might be corrupted. If files within an application package are altered, the program's code-signing will no longer be valid and services like the firewall that interact with the program may have troubles with it. Try reinstalling the program to see if a fresh copy will load properly and retain firewall settings.
Sometimes people may purposefully alter an application package's contents, such as adding colors back to the recent iTunes releases that removed them. While modifying programs might give desired features, it can also have the drawback of breaking the code signing and resulting in the program being treated by the system as if it was corrupted.
If this is the case, as with corrupted applications you can reinstall the software, but if you want to retain the custom modifications, you will have to put up with the firewall warnings. Keep in mind that only modifying the contents of an application package will break the code signature, so if you enable hidden features of a program using preference files then you should not have this problem.