Ce n'est pas seulement une question de place mémoire. Il y a bien d'autres facteurs à considérer. Par exemple, si le programme utilise un timer 16 bits, il ne tournera pas sur un ATtiny85. De plus, si le programme utilise souvent des interruptions, ou des appels de fonctions en cascade, il pourra ne pas fonctionner alors que la compilation est normale.
Dans les textes cités, on voit que sur ATtiny85, les variables occupent 76% de l'espace mémoire, ce qui laisse peu de place pour la pile. Si celle-ci est sollicitée trop souvent, cela finira par créer un conflit, le programme plantera alors qu'il avait très bien été compilé. Et dans ce cas, difficile de comprendre ce qui se passe !
Tout cela pour dire que l'adaptation d'un programme sur un petit microcontrôleur doit être prise en compte lors de la conception du programme lui même, d'une part en considérant les ressources, d'autre part par une programmation structurée qui permet d'éviter ce genre de bévue. Ce n'est pas simplement une question de nombre de sorties ou de taille mémoire.