In general there is no reason why a scoring matrix used in dynamic programming has to be symmetric. However, the most commonly used ones are symmetric, for example when making an alignment.
Usually a scoring matrix is chosen because it models a biological situation. If your biological model requires an asymmetric scoring system, then you may use one. The SLIM scoring matrix used to detect homologous transmembrane proteins is asymmetric, for example.
Keith is correct that for alignment a symmetric scoring matrix is not necessary, but in general symmetric scoring matrices are used since one does not usually usually have a priori information about the particular pair or sequences/species that would permit use of a asymmetric matrix.
For phylogenetic analysis, asymmetric subsitution matrices are common, especially for time-reversible models when base composition is not uniform.