Covariance in special and general relativity
The "principle of general covariance" as it is usually stated is a pretty vacuous statement.
Basically any theory can be made generally covariant. The biggest hurdle is that special relativity uses an affine space (Minkowski spacetime is basically a special pseudo-Euclidean affine space) to model spacetime, and affine spaces admit position vectors separating two distant points. Differentiable manifolds are only infinitesimally affine (they admit position vectors separating infinitesimally close points), so if you wish to provide a formulation of SR which is generally covariant, you need to get rid of all objects that rely on the affine structure. This is pretty much always possible however, although the formulation can be complicated.
The primary difference between SR and GR is not really in the allowed group of transformations, since SR can be made diffeomorphism-invariant. The difference is the existence of background structures.
In SR, one is always given the Minkowksi-metric $\eta$ as an eternal and unchanging background structure, therefore physics in SR can be described in a way that is adapted to this background structure. Hence the Poincaré group which is the isometry group of the background metric. If one so desires, using the Poincaré group as a symmetry group instead of the diffeomorphism group can be seen essentially as a gauge-fixing adapted to this preferred background structure. Since the background structure is known, we know that such a gauge-fixing is possible.
On the other hand in GR, the metric $g$ is a dynamical object one has to solve a complicated nonlinear partial differential equation for. The local geometry of the manifold is not fixed from the onset, and is only given once the Einstein Field Equations are solved. Moreover, different solutions to the EFE have widely different isometry groups and some do not have any at all (aside from the trivial group consisting of the identity element).
This means that in GR, such a simplification from the onset is not possible, and one has to use a language that can accomodate any local geometry. In SR, the local (and also global) geometry is known beforehand, therefore it is possible to use a language specifically molded to this background geometry.
But the real difference between the two is not "general covariance" or any other vacuous, nearly-content-free statement, but the existence or lack of thereof of "God-given" background structures.