Is it bad practice to use GameObjects rather than Transforms as parameters?
It actually doesn't matter ;). You should always pass the object that you need. If you just need the transform pass it. If you just need one of your custom scripts pass this. If you need multiple components in your method the most convenient way would be to pass just a GameObject and get the components in your method. You can also get the components outside and pass multiple references, but that depends on the function of your method and if it makes sence. If you allow to pass components seperate you can't be sure that those components belong to the same GameObject.
A single GameObject or Component reference makes no big difference since every Component have a reference to the containing GameObject (`.gameObject`)
I am not so sure
I think that depends on what the function you're passing it to needs it for. :P