Is there any difference between hydrogen acceptor and hydrogen carrier?
Actually, both NAD and FAD accept a hydride ion, H$^-$ (a proton with two electrons), not a hydrogen atom (a proton with one electron). For this reason, I would not refer to NAD or FAD as "hydrogen acceptors" or "hydrogen carriers" at all. It just gets confusing. (I guess you could call them "hydride acceptors" if you want, but it's not common terminology.)

"Electron acceptor" is the right name for NAD and FAD when discussing a redox reaction where they in fact accept electrons, in the form of an H$^-$ ion. Pyruvate dehydrogenase which you mentioned is one such example. This is not unique to biology, it's standard chemistry terminology: any molecule that accepts electrons in a redox reaction is (cleverly ;-) called an electron acceptor. For example, oxygen is an electron acceptor in combustion reactions. So "electron acceptor" is just a name for the role that the molecule plays in a redox reaction.

"Electron carrier" refers to the fact that NAD (and also NADP, and quinones, and some cytochromes ...) can carry electrons between reactions that occur at different places. For example, after NAD picks up an H$^-$ ion in the pyruvate dehydrogenase reaction to form NADH, it can carry the two electrons over to complex I where it donates them to ubiquinone. (And here, NADH acts as an electron donor, while the ubiquinone is the electron acceptor.) So the term "carrier" emphasizes the transporting role of the molecule. FAD is actually a bit different in this respect, because it is not soluble; it's a prosthetic group bound to certain enzymes like Complex II, and therefore it cannot really carry anything anywhere, or at least not very far. So to be precise, I personally would rather not call FAD a carrier. But maybe that's just me.