Erstens, kann ich bestätigen, dass die Ethernet Lib nicht auf dem Mega funktioniert, wenn 53 ein Input ist.
Zweitens ist die Arduino Doku da recht eindeutig:
Note about Slave Select (SS) pin on AVR based boards
All AVR based boards have an SS pin that is useful when they act as a slave controlled by an external master. Since this library supports only master mode, this pin should be set always as OUTPUT otherwise the SPI interface could be put automatically into slave mode by hardware, rendering the library inoperative.
Aus: SPI - Arduino Reference
Arduino communicates with the shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used to select the W5100, but it must be kept as an output or the SPI interface won't work
.
Aus: https://www.arduino.cc/en/pmwiki.php?n=Reference/Ethernet
Nachtrag:
Der 53 darf ein Input sein, muss aber auf High gezogen werden.
Ist 53 Input, und Low, dann geht SPI in den Slave Mode
Ist 53 Output, dann ist egal ob Low, oder High. SPI ist und bleibt Master.
Quelle: http://www.atmel.com/images/doc2585.pdf
Es macht also überhaupt keinen Sinn, 53 als Input zu deklarieren, da er sowieso nicht als Input genutzt werden kann, da ein Low das SPI (und damit das Ethernet) zum erliegen bringt.
Default ist Input, ohne Pullup.
Es kann in der Defaulteinstellung funktionieren, das wäre dann aber eher dem Zufall/Toleranzen zu verdanken.
53 Output, stellt einen stabilen Betrieb her.