La confusión, es que estás haciendo bindParam() dos veces, para la misma posición y diferentes valores al mismo tiempo: totalmente ilógico.
En todo caso lo que debes hacer primero es convertir el array a una cadena usando join(), y con dicho valor hacer el bindParam() para que la consulta resulte como en tu segundo ejemplo.