Creating a new family instance will place a new instance of an element with its default parameters.
Using ElementTransformUtils.CopyElement will make a copy of an existing element, taking into account any parameters that have changed from their default settings.
When creating a new family instance, there is an overload of NewFamilyInstance that allows you to specify which face it should be mounted on (in your case, a ceiling).
I'm not sure exactly what the behaviour of ElementTransformUtils.CopyElement is, but it should be the same as copying and pasting it yourself, using the UI.