Porque está declarado asssim?

public MateriaisVO(int tmpCodigo, String tmpNome, String tmpMarca, String tmpUnidMedida, int tmpQtdMin, int tmpQtdMax, float tmpValor, String tmpDescricao, String tmpImagem, int tmpStatus) {
    this.setCodigo(tmpCodigo);
    this.setNome(tmpNome);
    this.setMarca(tmpMarca);
    this.setUnidMedida(tmpUnidMedida);
    this.setQtdMin(tmpQtdMin);
    this.setQtdMax(tmpQtdMax);
    this.setValor(tmpValor);
    this.setDescricao(tmpDescricao);
    this.setImagem(tmpImagem);
    this.setStatus(tmpStatus);
}

public MateriaisVO() { // porque tenho que declarar isso ?
    this.setCodigo(0);
    this.setNome(null);
    this.setMarca(null);
    this.setUnidMedida(null);
    this.setQtdMin(0);
    this.setQtdMax(0);
    this.setValor(0);
    this.setDescricao(null);
    this.setImagem(null);
    this.setStatus(0);
}

Entendo que MateriaisVO seja uma classe, certo?
O que você tem no trecho que apresentou é, nada mais, que sobrecarga de métodos, especificamente, do construtor.
Existem N situações em que você pode criar métodos com mesmo nome e parâmetros diferentes.
Quando se trata do método construtor, temos que lembrar do seguinte detalhe: em java, quando você não cria nenhum construtor, o compilador cria um, quando está compilando o fonte e criando a classe (.class).
Basicamente, para uma classe chamada Foo, você tem um construtor assim
public class Foo{ public Foo() { super(); } }
Que é o que chamamos de construtor padrão.
Agora, quando criamos um construtor qualquer (com ou sem argumentos), o compilador já entende que existe um construtor e não cria mais o padrão.
Ocorre que, em algumas situações (normalmente ao utilizarmos frameworks) precisamos de um construtor que não recebe nenhum parâmetro (como o padrão ou o segundo que você ressaltou). É lógico que o uso de frameworks não é o único motivo para termos isso, mas é um dos mais corriqueiros.

Em resumo, um construtor é o que vai criar a nova instância de objeto daquela classe. Se você passa parâmetros, este objeto terá seus atirbutos com valores iniciais. Caso contrário, ele terá atributos com valores nulos ou zeros (se primitivos).

Obrigado Luis, Obrigado mesmo.

Como o amigo @Luis_Augusto_Santos explicou detalhadamente acima, de uma forma mais básica seria:

1° Exemplo: Método construtor que precisa de valores passados por parâmetro para que seu funcionamento ocorra normalmente.

2° Exemplo: Método construtor vazio que não depende de nenhum valor para seu funcionamento.

Obrigado Jonathan.