"I'm not good at soccer."
Well, yes and no. Without it, it could also mean "(s)he/we/they are bad at football*". In spoken language you can probably leave 私 out, since it would be clear enough from context, but in these 1-on-1 translations without context, it's better to be specific.
*or 'soccer', for those who want to think football only refers to American Football.
Steven you are right but the context which we know would indicate that I am speaking of myself and it's implied that we know the context. The problem is some questions require it and some don't. It should be consistent.
There is even a question referring to being bad at the piano that has 私は and will mark you correct if you omit it. So it says ピアノがへたです.
Long story short: it's an inseparable part of the negation of であります (a more formal version of です). In informal speech this is ではない（often contracted to じゃない）
Long story long: it's part of the auxiliary verb for "to be", and etymologically means "in the sense of / as". Take for example the present tense: 彼（かれ）は医者（いしゃ）であります, which literally translates to "he exists as (in the function of) a doctor". In plain English that becomes "he is a doctor". When negating this construction, は is added as a sort of topic marker. So, サッカーが上手ではありません literally conveys something like "as for [soccer] being good, it does not exist".
as a Brazilian, this sentence is incredibly useful... stereotypes, right?