The tick labels are centered at the requested position. If you want the base of the subscript centered instead, you can add an invisible pre-subscript. Here is a function to do this:
centeredSubscript[b_, s_] := Row[{Invisible[Subscript["", s]], Subscript[b, s]}]
Then, adjusting some options and using the above function:
data1 = {
{{1, 4}, {2, 1}, {3, 2}, {4, 3}},
{{1, 4}, {2, 1}, {3, 3}, {4, 2}}
};
ListLinePlot[
data1,
Axes -> True,
AxesStyle -> Thick,
GridLines -> {{1,2,3,4}, {1,2,3}},
GridLinesStyle -> {Dashed, None},
PlotMarkers -> {{"\[FilledSquare]", Large}},
AxesOrigin -> {0, 0},
Ticks -> {Table[{i, centeredSubscript["A", i], {0, .02}}, {i, 4}], Table[{i, i, {0, .02}}, {i, 0, 4}]},
TicksStyle -> Directive[Bold, 16]
]
