Option 1 and Option 2 are pretty much identical. Think about it - you can draw a straight line, a radiused line, or a spline line. You can do the exact same thing with Structural Framing (remember- it has a “location line”).
In Dynamo- you have created a line. You either map that line into a ModelCurve node to create Revit lines or a Structural Framing.By Curve to create framing. In the background, the Revit API is looking at the Dynamo line and creating something in Revit using the Dynamo line as the location definition. it’s just a matter of what you tell the Revit API to create - a line or a framing element (or a line based detail component, or a generic model adaptive, or a slanted column, or a pipe, or a duct, …).
you could totally do option 3 with a spreadsheet (assuming the spreadsheet was a collection of X, Y, Z points) - but you could also do option 1 and 2 as well with the same spreadsheet.