I would like to join the attributes of one polygon layer to another polygon layer by their common ID. The problem is that in layer A, each ID has multiple rows, because each represent shapes from the layer B cut in multiple pieces (intersected with other information) and I need that information to be replicated each time within the boundaries of the layer B. Is there a way to join by attribute, so that the target layer B repeats rows of the adjoining Layer A, when the ID in Layer A occurs multiple times?
I would suggest you start by reviewing the help files on Joins so that you understand the relationship types (one-to-one, one-to-many, many-to-one, many-to-many) and their implications.
Yes, there are two ways to do what you want. However I do want to point out (if it's not already clear and desired) you're going to end up with A number of B polygons stacked on top of each other unless you're trying to combine those attributes, which would be aggregation. I'm not entirely clear on what result you're trying to achieve. It doesn't make a lot of sense to apply a single attribute value from a piece to a whole.
A regular join does not support one-to-many relationships. It will only return the first found record. However a Spatial Join does have an option to support one-to-many and should work in this case since your A's are derived from your B's. The other option is the Make Query Table tool, the results of which have to be saved to be made permanent.